diff options
author | bescoto <bescoto@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109> | 2005-03-26 00:26:52 +0000 |
---|---|---|
committer | bescoto <bescoto@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109> | 2005-03-26 00:26:52 +0000 |
commit | 7f9dcb6819489f076ac41fc6babcadab4df58330 (patch) | |
tree | 92981036fadedecd9f3c6e0c21b7ce512ab68206 /rdiff-backup | |
parent | 327bb973694f3f4df68568a61c4f71469dce9058 (diff) | |
download | rdiff-backup-7f9dcb6819489f076ac41fc6babcadab4df58330.tar.gz |
Don't copy attributes to hard links, and make --no-hard-links
override. Thanks to David Vasilevsky.
git-svn-id: http://svn.savannah.nongnu.org/svn/rdiff-backup/trunk@559 2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109
Diffstat (limited to 'rdiff-backup')
-rw-r--r-- | rdiff-backup/CHANGELOG | 3 | ||||
-rw-r--r-- | rdiff-backup/rdiff_backup/Hardlink.py | 1 | ||||
-rw-r--r-- | rdiff-backup/rdiff_backup/Main.py | 9 | ||||
-rw-r--r-- | rdiff-backup/rdiff_backup/backup.py | 3 |
4 files changed, 11 insertions, 5 deletions
diff --git a/rdiff-backup/CHANGELOG b/rdiff-backup/CHANGELOG index 657796a..d8ccd56 100644 --- a/rdiff-backup/CHANGELOG +++ b/rdiff-backup/CHANGELOG @@ -23,6 +23,9 @@ Fixed user/group restoring error noticed by Fran Firman. Checked in Robert Shaw's --chars-to-quote patch +Treated hard link permission problem on Mac OS X by applying +suggestion by David Vasilevsky. + New in v0.13.4 (2004/01/31) --------------------------- diff --git a/rdiff-backup/rdiff_backup/Hardlink.py b/rdiff-backup/rdiff_backup/Hardlink.py index 8b03d26..4bfd2ee 100644 --- a/rdiff-backup/rdiff_backup/Hardlink.py +++ b/rdiff-backup/rdiff_backup/Hardlink.py @@ -118,7 +118,6 @@ def link_rp(diff_rorp, dest_rpath, dest_root = None): # This can happen if the source of dest_link_rpath was deleted # after it's linking info was recorded but before # dest_link_rpath was written. - print "$$$$$$$", exc, exc[0], errno.errorcode[exc[0]] if errno.errorcode[exc[0]] == 'ENOENT': dest_rpath.touch() # This will cause an UpdateError later else: raise Exception("EnvironmentError '%s' linking %s to %s" % diff --git a/rdiff-backup/rdiff_backup/Main.py b/rdiff-backup/rdiff_backup/Main.py index 2f36859..cd77d63 100644 --- a/rdiff-backup/rdiff_backup/Main.py +++ b/rdiff-backup/rdiff_backup/Main.py @@ -415,7 +415,8 @@ def backup_set_fs_globals(rpin, rpout): Log.FatalError("--never-drop-acls specified, but ACL support\n" "disabled on destination filesystem") - SetConnections.UpdateGlobal('preserve_hardlinks', dest_fsa.hardlinks) + if Globals.preserve_hardlinks != 0: + SetConnections.UpdateGlobal('preserve_hardlinks', dest_fsa.hardlinks) SetConnections.UpdateGlobal('fsync_directories', dest_fsa.fsync_dirs) SetConnections.UpdateGlobal('change_ownership', dest_fsa.ownership) SetConnections.UpdateGlobal('chars_to_quote', dest_fsa.chars_to_quote) @@ -521,7 +522,8 @@ def restore_set_fs_globals(target): Log.FatalError("--never-drop-acls specified, but ACL support\n" "disabled on destination filesystem") - SetConnections.UpdateGlobal('preserve_hardlinks', target_fsa.hardlinks) + if Globals.preserve_hardlinks != 0: + SetConnections.UpdateGlobal('preserve_hardlinks', target_fsa.hardlinks) SetConnections.UpdateGlobal('change_ownership', target_fsa.ownership) if Globals.chars_to_quote is None: # otherwise already overridden @@ -699,7 +701,8 @@ def single_set_fs_globals(rbdir): update_triple(fsa.carbonfile, ('carbonfile_active', 'carbonfile_write', 'carbonfile_conn')) - SetConnections.UpdateGlobal('preserve_hardlinks', fsa.hardlinks) + if Globals.preserve_hardlinks != 0: + SetConnections.UpdateGlobal('preserve_hardlinks', fsa.hardlinks) SetConnections.UpdateGlobal('fsync_directories', fsa.fsync_dirs) SetConnections.UpdateGlobal('change_ownership', fsa.ownership) SetConnections.UpdateGlobal('chars_to_quote', fsa.chars_to_quote) diff --git a/rdiff-backup/rdiff_backup/backup.py b/rdiff-backup/rdiff_backup/backup.py index bf458bd..0858887 100644 --- a/rdiff-backup/rdiff_backup/backup.py +++ b/rdiff-backup/rdiff_backup/backup.py @@ -497,7 +497,8 @@ class PatchITRB(rorpiter.ITRBranch): assert diff_rorp.get_attached_filetype() == 'diff' if robust.check_common_error(self.error_handler, Rdiff.patch_local, (basis_rp, diff_rorp, new)) == 0: return 0 - if new.lstat(): rpath.copy_attribs(diff_rorp, new) + if new.lstat() and not diff_rorp.isflaglinked(): + rpath.copy_attribs(diff_rorp, new) return self.matches_cached_rorp(diff_rorp, new) def matches_cached_rorp(self, diff_rorp, new_rp): |