diff --git a/rdiff-manager.py b/rdiff-manager.py index 478183d32c1598d710e3044b05d1c9b04f69b3bb..87356b13bce6ff030a5a3fa9eb25d35af329ce82 100755 --- a/rdiff-manager.py +++ b/rdiff-manager.py @@ -28,13 +28,24 @@ class Host(object): return run_rdiff('--test-server', 'root@%s::/' % self.hostname) def test_directory(self): + # ensure destination is rdiff-backup target try: - os.makedirs(self.destination) - except OSError as e: - if os.access(self.destination, os.F_OK): - pass - else: - raise e + run_rdiff('--list-increments', self.destination) + except subprocess.CalledProcessError: + # check if base directory exists + try: + os.makedirs(self.destination) + except OSError as e: + if os.access(self.destination, os.X_OK): + pass + else: + raise e + # create baseline empty data directory + run_rdiff(*(self.run_backup_flags.split(' ') + [ '--exclude', + '**', 'root@%s::/' % (self.hostname), self.destination ] ) ) + else: + pass + def remove_old(self): # even with force, only increments are removed, never the most recent backup