From 031387681124c30c89e2466136c6e29416c0cb5c Mon Sep 17 00:00:00 2001
From: Edwin Eefting <edwin@datux.nl>
Date: Mon, 28 Oct 2019 19:42:51 +0100
Subject: [PATCH] starting tests on production

---
 zfs_autobackup | 35 +++++++++++++++++++++++------------
 1 file changed, 23 insertions(+), 12 deletions(-)

diff --git a/zfs_autobackup b/zfs_autobackup
index 0c966ee..10fa91d 100755
--- a/zfs_autobackup
+++ b/zfs_autobackup
@@ -1344,10 +1344,24 @@ class ZfsAutobackup:
         # target_node.run(["/root/outputtest"], readonly=True)
 
         self.set_title("Selecting")
-        source_datasets=source_node.selected_datasets
-        if not source_datasets:
+        selected_source_datasets=source_node.selected_datasets
+        if not selected_source_datasets:
             abort("No source filesystems selected, please do a 'zfs set autobackup:{0}=true' on {1}".format(self.args.backup_name, self.args.ssh_source))
 
+
+        source_datasets=[]
+
+        #filter out already replicated stuff?
+        if not self.args.ignore_replicated:
+            source_datasets=selected_source_datasets
+        else:
+            for selected_source_dataset in selected_source_datasets:
+                if selected_source_dataset.is_changed():
+                    source_datasets.append(selected_source_dataset)
+                else:
+                    selected_source_dataset.verbose("Ignoring, already replicated")
+
+
         if not self.args.no_snapshot:
             self.set_title("Snapshotting")
             source_node.consistent_snapshot(source_datasets, source_node.new_snapshotname(), allow_empty=self.args.allow_empty)
@@ -1374,18 +1388,15 @@ class ZfsAutobackup:
         for source_dataset in source_datasets:
 
             try:
-                if self.args.ignore_replicated and not source_dataset.is_changed():
-                    source_dataset.verbose("Already replicated")
-                else:
-                    #determine corresponding target_dataset
-                    target_name=self.args.target_path + "/" + source_dataset.lstrip_path(self.args.strip_path)
-                    target_dataset=ZfsDataset(target_node, target_name)
+                #determine corresponding target_dataset
+                target_name=self.args.target_path + "/" + source_dataset.lstrip_path(self.args.strip_path)
+                target_dataset=ZfsDataset(target_node, target_name)
 
-                    #ensure parents exists
-                    if not target_dataset.parent.exists:
-                        target_dataset.parent.create_filesystem(parents=True)
+                #ensure parents exists
+                if not target_dataset.parent.exists:
+                    target_dataset.parent.create_filesystem(parents=True)
 
-                    source_dataset.sync_snapshots(target_dataset, show_progress=self.args.progress, resume=self.args.resume, filter_properties=filter_properties, set_properties=set_properties, ignore_recv_exit_code=self.args.ignore_transfer_errors, source_holds= not self.args.no_holds, rollback=self.args.rollback)
+                source_dataset.sync_snapshots(target_dataset, show_progress=self.args.progress, resume=self.args.resume, filter_properties=filter_properties, set_properties=set_properties, ignore_recv_exit_code=self.args.ignore_transfer_errors, source_holds= not self.args.no_holds, rollback=self.args.rollback)
             except Exception as e:
                 source_dataset.error(str(e))
                 if self.args.debug: