From 27ff747cf07ad3666a50c0140a6aafd9da84ddca Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Wed, 7 Oct 2026 07:24:09 -0400 Subject: [PATCH] backups: Run compact in cleanup Tests: - Enable scheduled backups for root and remote repo. Modify schedule.py so that backups and cleanup will run every 2 minutes. Log shows compact command is run for both /var/lib/freedombox/borgbackup and mount location for remote repo. No errors shown in log. Closes: #2380 Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- freedombox/modules/backups/privileged.py | 6 ++++++ freedombox/modules/backups/repository.py | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/freedombox/modules/backups/privileged.py b/freedombox/modules/backups/privileged.py index 516e3da54..aec330a2d 100644 --- a/freedombox/modules/backups/privileged.py +++ b/freedombox/modules/backups/privileged.py @@ -316,6 +316,12 @@ def delete_archive(path: str, encryption_passphrase: secret_str | None = None): _run(['borg', 'delete', path], encryption_passphrase) +@privileged +def compact(path: str): + """Compact segments and free repo disk space.""" + _run(['borg', 'compact', path]) + + def _extract(archive_path, destination, encryption_passphrase, locations=None): """Extract archive contents.""" prev_dir = os.getcwd() diff --git a/freedombox/modules/backups/repository.py b/freedombox/modules/backups/repository.py index bb1c1a25d..c065f7031 100644 --- a/freedombox/modules/backups/repository.py +++ b/freedombox/modules/backups/repository.py @@ -81,9 +81,9 @@ class BaseBorgRepository(abc.ABC): def prepare(): """Prepare the repository for operations.""" - @staticmethod - def cleanup(): + def cleanup(self): """Cleanup the repository after operations.""" + privileged.compact(self.borg_path) def get_info(self): """Return Borg information about a repository.""" @@ -317,6 +317,7 @@ class SshBorgRepository(BaseBorgRepository): def cleanup(self): """Cleanup the repository after operations by unmounting.""" + super().cleanup() self._umount_ignore_errors() @property