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...')
|
logger.info('Removing old backups...')
|
||||||
dirs.sort()
|
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:
|
if self.remote_sudo:
|
||||||
_, _, stderr = self._ssh.exec_command(
|
_, _, stderr = self._ssh.exec_command(
|
||||||
f'sudo rm -r {shlex.quote(f"{self.output}/simple_backup/{dirs[i]}")}')
|
f'sudo rm -r {shlex.quote(f"{self.output}/simple_backup/{dirs[i]}")}')
|
||||||
@@ -317,7 +321,11 @@ class Backup:
|
|||||||
logger.info('Removing old backups...')
|
logger.info('Removing old backups...')
|
||||||
dirs.sort()
|
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:
|
try:
|
||||||
rmtree(f'{self.output}/simple_backup/{dirs[i]}')
|
rmtree(f'{self.output}/simple_backup/{dirs[i]}')
|
||||||
count += 1
|
count += 1
|
||||||
|
|||||||
@@ -140,6 +140,15 @@ class TestRsync:
|
|||||||
|
|
||||||
assert backups(out) == remaining
|
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:
|
def test_remove_before(self, src: Path, out: Path) -> None:
|
||||||
assert run_backup(out, [str(src)]) == 0
|
assert run_backup(out, [str(src)]) == 0
|
||||||
assert run_backup(out, [str(src)], keep=0, remove_before=True) == 0
|
assert run_backup(out, [str(src)], keep=0, remove_before=True) == 0
|
||||||
|
|||||||
Reference in New Issue
Block a user