summaryrefslogtreecommitdiff
path: root/rdiff-backup/rdiff_backup/selection.py
diff options
context:
space:
mode:
Diffstat (limited to 'rdiff-backup/rdiff_backup/selection.py')
-rw-r--r--rdiff-backup/rdiff_backup/selection.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/rdiff-backup/rdiff_backup/selection.py b/rdiff-backup/rdiff_backup/selection.py
index bff1e0c..96b53aa 100644
--- a/rdiff-backup/rdiff_backup/selection.py
+++ b/rdiff-backup/rdiff_backup/selection.py
@@ -274,6 +274,10 @@ class Select:
self.add_selection_func(self.special_get_sf(1))
elif opt == "--include-symbolic-links":
self.add_selection_func(self.symlinks_get_sf(1))
+ elif opt == "--max-file-size":
+ self.add_selection_func(self.size_get_sf(1, arg))
+ elif opt == "--min-file-size":
+ self.add_selection_func(self.size_get_sf(0, arg))
else: assert 0, "Bad selection option %s" % opt
except SelectError, e: self.parse_catch_error(e)
assert filelists_index == len(filelists)
@@ -507,6 +511,16 @@ probably isn't what you meant.""" %
sel_func.name = (include and "include" or "exclude") + " special files"
return sel_func
+ def size_get_sf(self, min_max, sizestr):
+ """Return selection function given by filesize"""
+ size = int(sizestr)
+ assert size > 0
+ if min_max: sel_func = lambda rp: (rp.getsize() <= size)
+ else: sel_func = lambda rp: (rp.getsize() >= size)
+ sel_func.exclude = 1
+ sel_func.name = "%s size %d" % (min_max and "Maximum" or "Minimum", size)
+ return sel_func
+
def glob_get_sf(self, glob_str, include):
"""Return selection function given by glob string"""
assert include == 0 or include == 1