diff --git a/secondary.py b/secondary.py index 8a43dbe610142bd1665e439084c8f223445fb969..8e9714be98bcae392f683ea0ed625c18423fb97e 100644 --- a/secondary.py +++ b/secondary.py @@ -74,7 +74,7 @@ class Backup: cwd = os.path.join(self.mount, self.path) reader = tar_stream.TarReader(self.primary_out) for e in reader: - self.make_room(e.size) + self.make_room(e.size, e.path) e.tarfile.extract(e, path=cwd) pass @@ -117,15 +117,17 @@ class Backup: else: self.status.unchanged += 1 - def make_room(self, size): - def get_free_need(size): + def make_room(self, size, path=None): + def get_free_need(size, path): stat = os.statvfs(self.dst_root) free = stat.f_frsize * stat.f_bavail need = size + stat.f_frsize + if path: + need += stat.f_frsize * len(path.split('/')) return (free, need) do_log = False while True: - free,need = get_free_need(size) + free,need = get_free_need(size, path) if do_log: self.log.MESSAGE("After, free=%d, need=%d" % (free, need)) pass