diff --git a/docs/30_Configuration/30_Filetransfer.md b/docs/30_Configuration/30_Filetransfer.md index c0a03865380c892c3350986900c398e2971a171c..6145c8c9d9e72727a18f57fed6522928f67879bb 100644 --- a/docs/30_Configuration/30_Filetransfer.md +++ b/docs/30_Configuration/30_Filetransfer.md @@ -172,8 +172,11 @@ is a full backup and all following runs make an incremental backup. You have the possibility to keep all younger backups and have the possibility to delete older backups but to keep N weekly, monthly and yearly snapshots. +The value for "keep-last" never deletes the last N most recent snapshots. + ```text # prune +restic_keep-last = 5 restic_keep-hourly = 100 restic_keep-daily = 90 restic_keep-weekly = 12 diff --git a/jobs/transfer.job.dist b/jobs/transfer.job.dist index 06ee1b9153deefb6b9fa755efa0aea1527535aed..87071fb1023252c6b7b76a246cf68c5e02338677 100644 --- a/jobs/transfer.job.dist +++ b/jobs/transfer.job.dist @@ -147,6 +147,7 @@ restic_tag = imlbackup restic_mountpoint = /mnt/restore # prune +restic_keep-last = 5 restic_keep-hourly = 100 restic_keep-daily = 90 restic_keep-weekly = 12 diff --git a/plugins/transfer/restic.sh b/plugins/transfer/restic.sh index 004490f4dbebb0ccefe628ee32e74b16b95e67fb..5f12d28dbba002c8a339e505690765a350b3dcbf 100644 --- a/plugins/transfer/restic.sh +++ b/plugins/transfer/restic.sh @@ -160,23 +160,24 @@ echo "--- PRUNE" local _tag=$( _j_getvar ${STORAGEFILE} "${CFGPREFIX}tag") - - local _keep_h=$( _j_getvar ${STORAGEFILE} "${CFGPREFIX}keep-hourly") - local _keep_d=$( _j_getvar ${STORAGEFILE} "${CFGPREFIX}keep-daily") - local _keep_w=$( _j_getvar ${STORAGEFILE} "${CFGPREFIX}keep-weekly") - local _keep_m=$( _j_getvar ${STORAGEFILE} "${CFGPREFIX}keep-monthly") - local _keep_y=$( _j_getvar ${STORAGEFILE} "${CFGPREFIX}keep-yearly") local _mycmd="restic forget \ ${ARGS_DEFAULT} \ --tag $_tag \ - --group-by "paths,tags" \ - --keep-hourly $_keep_h \ - --keep-daily $_keep_d \ - --keep-weekly $_keep_w \ - --keep-monthly $_keep_m \ - --keep-yearly $_keep_y" + --group-by paths,tags \ + --cleanup-cache" + + local _keep + for mykeep in last hourly daily weekly monthly yearly + do + _keep=$( _j_getvar "${STORAGEFILE}" "${CFGPREFIX}keep-${mykeep}") + if [ -n "$_keep" ]; then + _mycmd="${_mycmd} --keep-${mykeep} ${_keep}" + fi + done + echo $_mycmd + sleep 3 color cmd eval $_mycmd local _myrc=$?