From 2a19c705be3856a2242789795cd06c9708560055 Mon Sep 17 00:00:00 2001 From: lhahn Date: Fri, 16 Oct 2026 22:26:36 +0200 Subject: [PATCH] Backup server: skip self-pruning repos in remote-prune backup_server_remote_skip lists apps whose client prunes the repository itself; remote-prune without arguments leaves them alone (an explicit app list still works). Co-Authored-By: Claude Opus 5.5 --- defaults/main.yml | 2 ++ templates/opt/backup/inst/cloud-server-backup.j2 | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/defaults/main.yml b/defaults/main.yml index 396b864..b3dfb55 100755 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -26,6 +26,8 @@ backup_server_local_prune_time: 10 #server: clients to prune/mirror (defaults to backup_clients), apps not mirrored locally, local compression backup_server_clients: "{{ backup_clients }}" backup_server_local_skip: [] +#apps whose client prunes its own repository; remote-prune (without arguments) skips them +backup_server_remote_skip: [] backup_server_compression: lzma #local mirror of the remote repositories (defaults to /storage/remote-backups) #backup_server_mirror: /mnt/nas/backup/mirror diff --git a/templates/opt/backup/inst/cloud-server-backup.j2 b/templates/opt/backup/inst/cloud-server-backup.j2 index bb0ded4..4c292d3 100644 --- a/templates/opt/backup/inst/cloud-server-backup.j2 +++ b/templates/opt/backup/inst/cloud-server-backup.j2 @@ -7,6 +7,8 @@ LOCALREPOLOCATION="{{ backup_location }}/{{ backup_app }}"; APPLIST="{{ server_clients | json_query('*.app') | join(' ') }}"; # repos that are only pruned remotely, not mirrored locally LOCALAPPLIST="{{ server_clients | json_query('*.app') | difference(backup_server_local_skip) | join(' ') }}"; +# repos pruned by their own client (e.g. a NAS borg plugin), skipped by remote-prune without arguments +REMOTEPRUNEAPPLIST="{{ server_clients | json_query('*.app') | difference(backup_server_remote_skip) | join(' ') }}"; MIRRORFOLDER="{{ backup_server_mirror | default(backup_remotes_folder) }}"; declare -A BORG_CLIENT_MAP @@ -246,7 +248,11 @@ local_delete () { ;; "remote-prune") - USERLIST=$(validate_apps_or_default "$2"); + if [[ -z "$2" ]]; then + USERLIST=$REMOTEPRUNEAPPLIST; + else + USERLIST=$(validate_apps_or_default "$2"); + fi remote_prune "$USERLIST"; ;;