summaryrefslogtreecommitdiff
path: root/rdiff-backup/rdiff_backup/rpath.py
diff options
context:
space:
mode:
Diffstat (limited to 'rdiff-backup/rdiff_backup/rpath.py')
-rw-r--r--rdiff-backup/rdiff_backup/rpath.py33
1 files changed, 17 insertions, 16 deletions
diff --git a/rdiff-backup/rdiff_backup/rpath.py b/rdiff-backup/rdiff_backup/rpath.py
index 9d54872..5773dd7 100644
--- a/rdiff-backup/rdiff_backup/rpath.py
+++ b/rdiff-backup/rdiff_backup/rpath.py
@@ -288,6 +288,8 @@ class RORPath(RPathStatic):
(not Globals.change_ownership or self.issym())):
# Don't compare gid/uid for symlinks or if not change_ownership
pass
+ elif key == 'mtime':
+ Log("%s differs only in mtime, skipping" % (self.path,), 2)
elif key == 'atime' and not Globals.preserve_atime: pass
elif key == 'devloc' or key == 'inode' or key == 'nlink': pass
elif key == 'size' and not self.isreg(): pass
@@ -319,6 +321,10 @@ class RORPath(RPathStatic):
"""Reproduce RORPath from __getstate__ output"""
self.index, self.data = rorp_state
+ def get_rorpath(self):
+ """Return new rorpath based on self"""
+ return RORPath(self.index, self.data.copy())
+
def make_placeholder(self):
"""Make rorp into a placeholder
@@ -697,19 +703,15 @@ class RPath(RORPath):
return self.conn.Globals.get('process_gid') == self.data['gid']
def delete(self):
- """Delete file at self.path
-
- The destructive stepping allows this function to delete
- directories even if they have files and we lack permissions.
-
- """
+ """Delete file at self.path. Recursively deletes directories."""
Log("Deleting %s" % self.path, 7)
self.setdata()
- if not self.lstat(): return # must have been deleted in meantime
+ if not self.lstat():
+ Log("Warning: %s does not exist---deleted in meantime?"
+ % (self.path,), 2)
elif self.isdir():
itm = IterTreeReducer(RpathDeleter, [])
- for dsrp in Select(DSRPath(None, self)).set_iter():
- itm(dsrp.index, dsrp)
+ for rp in Select(self).set_iter(): itm(rp.index, rp)
itm.Finish()
else: self.conn.os.unlink(self.path)
self.setdata()
@@ -891,18 +893,17 @@ class RPathFileHook:
import FilenameMapping
from lazy import *
from selection import *
-from destructive_stepping import *
from highlevel import *
class RpathDeleter(ITRBranch):
"""Delete a directory. Called by RPath.delete()"""
- def start_process(self, index, dsrp):
- self.dsrp = dsrp
+ def start_process(self, index, rp):
+ self.rp = rp
def end_process(self):
- if self.dsrp.isdir(): self.dsrp.rmdir()
- else: self.dsrp.delete()
+ if self.rp.isdir(): self.rp.rmdir()
+ else: self.rp.delete()
- def can_fast_process(self, index, dsrp): return not dsrp.isdir()
- def fast_process(self, index, dsrp): dsrp.delete()
+ def can_fast_process(self, index, rp): return not rp.isdir()
+ def fast_process(self, index, rp): rp.delete()