diff --git a/qubesadmin/backup/restore.py b/qubesadmin/backup/restore.py index fc3aee1..f013047 100644 --- a/qubesadmin/backup/restore.py +++ b/qubesadmin/backup/restore.py @@ -1005,8 +1005,18 @@ class BackupRestore(object): else: backup_stdin = open(self.backup_location, 'rb') + block_size = os.statvfs(self.tmpdir).f_frsize + + # slow down the restore if there is too little space in the temp dir + checkpoint_command = \ + 'while [ $(stat -f --format=%a "{}") -lt {} ]; ' \ + 'do sleep 1; done' \ + .format(self.tmpdir, 500 * 1024 * 1024 // block_size) + tar1_command = ['tar', '-ixv', + '--checkpoint=10000', + '--checkpoint-action=exec=' + checkpoint_command, '--occurrence=1', '-C', self.tmpdir] + filelist