summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorowsla <owsla@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109>2008-01-26 19:15:00 +0000
committerowsla <owsla@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109>2008-01-26 19:15:00 +0000
commitf463198cbf8b921915457c9be4582ed61109ed79 (patch)
tree98fcf16b4d238767421face688840d23b65e3c09
parent2c0c084566adfbf6a02de990b31d609e40294120 (diff)
downloadrdiff-backup-f463198cbf8b921915457c9be4582ed61109ed79.tar.gz
When unreadable dirs are updated, remove them from the list of dirs whose
permissions need to be reset later since we do it during the backup. git-svn-id: http://svn.savannah.nongnu.org/svn/rdiff-backup/trunk@876 2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109
-rw-r--r--rdiff-backup/CHANGELOG4
-rw-r--r--rdiff-backup/rdiff_backup/backup.py9
2 files changed, 13 insertions, 0 deletions
diff --git a/rdiff-backup/CHANGELOG b/rdiff-backup/CHANGELOG
index 8df3b18..baf131b 100644
--- a/rdiff-backup/CHANGELOG
+++ b/rdiff-backup/CHANGELOG
@@ -1,6 +1,10 @@
New in v1.1.16 (????/??/??)
---------------------------
+Correctly handle updates to nested directories with unreadable permissions.
+Thanks to John Goerzen for the bug report. Closes Debian bugs #389134 and
+#411849. (Andrew Ferguson)
+
Manpage improvements from Justin Pryzby.
Improve the handling of directories with many small files when backing-up
diff --git a/rdiff-backup/rdiff_backup/backup.py b/rdiff-backup/rdiff_backup/backup.py
index 0cdad16..eab6c75 100644
--- a/rdiff-backup/rdiff_backup/backup.py
+++ b/rdiff-backup/rdiff_backup/backup.py
@@ -651,6 +651,15 @@ class PatchITRB(rorpiter.ITRBranch):
"""Finish processing directory"""
if self.dir_update:
assert self.base_rp.isdir()
+
+ if (Globals.process_uid != 0 and
+ self.dir_update.getperms() % 01000 < 0700):
+ # Directory's permissions were adjusted at the start to
+ # make it readable -- remove it from the list since they
+ # will be reset by the copy_attribs() call
+ self.CCPP.dir_perms_list.remove((self.base_rp,
+ self.dir_update.getperms()))
+
rpath.copy_attribs(self.dir_update, self.base_rp)
elif self.dir_replacement:
self.base_rp.rmdir()