summaryrefslogtreecommitdiff
path: root/rdiff-backup/rdiff_backup/backup.py
diff options
context:
space:
mode:
Diffstat (limited to 'rdiff-backup/rdiff_backup/backup.py')
-rw-r--r--rdiff-backup/rdiff_backup/backup.py13
1 files changed, 8 insertions, 5 deletions
diff --git a/rdiff-backup/rdiff_backup/backup.py b/rdiff-backup/rdiff_backup/backup.py
index a89f21e..850e266 100644
--- a/rdiff-backup/rdiff_backup/backup.py
+++ b/rdiff-backup/rdiff_backup/backup.py
@@ -180,10 +180,10 @@ class DestinationStruct:
def get_one_sig(cls, dest_base_rpath, index, src_rorp, dest_rorp):
"""Return a signature given source and destination rorps"""
- if (Globals.preserve_hardlinks and
- Hardlink.islinked(src_rorp or dest_rorp)):
+ if (Globals.preserve_hardlinks and src_rorp and
+ Hardlink.islinked(src_rorp)):
dest_sig = rpath.RORPath(index)
- dest_sig.flaglinked(Hardlink.get_link_index(dest_sig))
+ dest_sig.flaglinked(Hardlink.get_link_index(src_rorp))
elif dest_rorp:
dest_sig = dest_rorp.getRORPath()
if dest_rorp.isreg():
@@ -312,8 +312,8 @@ class CacheCollatedPostProcess:
will be backed up correctly.
"""
- if source_rorp: Hardlink.add_rorp(source_rorp, source = 1)
- if dest_rorp: Hardlink.add_rorp(dest_rorp, source = 0)
+ if Globals.preserve_hardlinks and source_rorp:
+ Hardlink.add_rorp(source_rorp, dest_rorp)
if (dest_rorp and dest_rorp.isdir() and Globals.process_uid != 0
and dest_rorp.getperms() % 01000 < 0700):
self.unreadable_dir_init(source_rorp, dest_rorp)
@@ -355,6 +355,9 @@ class CacheCollatedPostProcess:
always false for un-changed files).
"""
+ if Globals.preserve_hardlinks and source_rorp:
+ Hardlink.del_rorp(source_rorp)
+
if not changed or success:
if source_rorp: self.statfileobj.add_source_file(source_rorp)
if dest_rorp: self.statfileobj.add_dest_file(dest_rorp)