Log each old backup as it is removed
Removing old backups can take minutes on a slow drive; logging each one with its position (e.g. "(1/3)") shows that the backup is still progressing.
This commit is contained in:
@@ -278,7 +278,11 @@ class Backup:
|
||||
logger.info('Removing old backups...')
|
||||
dirs.sort()
|
||||
|
||||
for i in range(n_backup - self.keep):
|
||||
n_remove = n_backup - self.keep
|
||||
|
||||
for i in range(n_remove):
|
||||
logger.info('Removing backup %s (%d/%d)...', dirs[i], i + 1, n_remove)
|
||||
|
||||
if self.remote_sudo:
|
||||
_, _, stderr = self._ssh.exec_command(
|
||||
f'sudo rm -r {shlex.quote(f"{self.output}/simple_backup/{dirs[i]}")}')
|
||||
@@ -317,7 +321,11 @@ class Backup:
|
||||
logger.info('Removing old backups...')
|
||||
dirs.sort()
|
||||
|
||||
for i in range(n_backup - self.keep):
|
||||
n_remove = n_backup - self.keep
|
||||
|
||||
for i in range(n_remove):
|
||||
logger.info('Removing backup %s (%d/%d)...', dirs[i], i + 1, n_remove)
|
||||
|
||||
try:
|
||||
rmtree(f'{self.output}/simple_backup/{dirs[i]}')
|
||||
count += 1
|
||||
|
||||
@@ -140,6 +140,15 @@ class TestRsync:
|
||||
|
||||
assert backups(out) == remaining
|
||||
|
||||
def test_removal_logged(self, src: Path, out: Path, caplog: pytest.LogCaptureFixture) -> None:
|
||||
for _ in range(3):
|
||||
assert run_backup(out, [str(src)]) == 0
|
||||
|
||||
assert run_backup(out, [str(src)], keep=0) == 0
|
||||
assert 'Removing backup 2026-10-14_10-00-00 (1/3)...' in caplog.text
|
||||
assert 'Removing backup 2026-10-14_12-00-00 (3/3)...' in caplog.text
|
||||
assert 'Removed 3 backups' in caplog.text
|
||||
|
||||
def test_remove_before(self, src: Path, out: Path) -> None:
|
||||
assert run_backup(out, [str(src)]) == 0
|
||||
assert run_backup(out, [str(src)], keep=0, remove_before=True) == 0
|
||||
|
||||
Reference in New Issue
Block a user