From 347a4c3dd5ac85adec649465071d2e048d64ba96 Mon Sep 17 00:00:00 2001 From: Dan Helfman Date: Tue, 3 Dec 2024 15:43:50 -0800 Subject: [PATCH] Fix breakage of ZFS user property auto-backup (#80). --- borgmatic/hooks/data_source/zfs.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/borgmatic/hooks/data_source/zfs.py b/borgmatic/hooks/data_source/zfs.py index 225ca91f..552aadbe 100644 --- a/borgmatic/hooks/data_source/zfs.py +++ b/borgmatic/hooks/data_source/zfs.py @@ -24,7 +24,7 @@ BORGMATIC_USER_PROPERTY = 'org.torsion.borgmatic:backup' Dataset = collections.namedtuple( - 'Dataset', ('name', 'mount_point', 'user_property_value', 'contained_source_directories') + 'Dataset', ('name', 'mount_point', 'auto_backup', 'contained_source_directories') ) @@ -57,7 +57,7 @@ def get_datasets_to_backup(zfs_command, source_directories): # directories.) datasets = sorted( ( - Dataset(dataset_name, mount_point, user_property_value, ()) + Dataset(dataset_name, mount_point, (user_property_value == 'auto'), ()) for line in list_output.splitlines() for (dataset_name, mount_point, user_property_value) in (line.rstrip().split('\t'),) ), @@ -74,16 +74,19 @@ def get_datasets_to_backup(zfs_command, source_directories): Dataset( dataset.name, dataset.mount_point, - dataset.user_property_value, + dataset.auto_backup, contained_source_directories, ) for dataset in datasets for contained_source_directories in ( - borgmatic.hooks.data_source.snapshot.get_contained_directories( - dataset.mount_point, candidate_source_directories + ( + ((dataset.mount_point,) if dataset.auto_backup else ()) + + borgmatic.hooks.data_source.snapshot.get_contained_directories( + dataset.mount_point, candidate_source_directories + ) ), ) - if contained_source_directories or dataset.user_property_value == 'auto' + if contained_source_directories ), key=lambda dataset: dataset.mount_point, )