diff --git a/handlers/borg.helper.in b/handlers/borg.helper.in index c995310c57057c2bdf2023128abe2f954e1a653e..6cc4d6bd026f181b1192c9c1f862c5bee104271f 100644 --- a/handlers/borg.helper.in +++ b/handlers/borg.helper.in @@ -272,13 +272,21 @@ do_borg_prune() { declare -a tmp_array set -o noglob REPLY= - formBegin "$borg_title - keep all backups made within this number of days" - formItem "keep" "$borg_keep" + formBegin "$borg_title - what backups to keep:" + formItem "hourly" "$borg_keep_hourly" + # for backwards compatibility daily is still named borg_keep + formItem "daily" "$borg_keep" + formItem "weekly" "$borg_keep_weekly" + formItem "monthly" "$borg_keep_monthly" + formItem "yearly" "$borg_keep_yearly" formDisplay - [ $? = 0 ] || return tmp_array=($REPLY) - borg_keep=${tmp_array[0]} + borg_keep_hourly=${tmp_array[0]} + borg_keep=${tmp_array[1]} + borg_keep_weekly=${tmp_array[2]} + borg_keep_monthly=${tmp_array[3]} + borg_keep_yearly=${tmp_array[4]} set +o noglob fi @@ -312,8 +320,13 @@ EOF cat >> $next_filename <<EOF ## for more info see : borg prune -h +[prune] prune = $borg_prune -keep = "${borg_keep}d" +keep_hourly = $borg_keep_hourly +keep = $borg_keep +keep_weekly = $borg_keep_weekly +keep_monthly = $borg_keep_monthly +keep_yearly = $borg_keep_yearly [dest] directory = $borg_directory @@ -381,7 +394,14 @@ borg_wizard() { borg_compression=lz4 borg_encryption=none borg_passphrase= + + # pruning + borg_keep_hourly= + # for backwards compatibility daily is still named keep borg_keep=30 + borg_keep_weekly= + borg_keep_monthly= + borg_keep_yearly= # Global variables whose '*' shall not be expanded set -o noglob diff --git a/handlers/borg.in b/handlers/borg.in index 6d9128cb928bf37a7942be2828bc2d9d832a3021..e6bb7902016d991b31bf7dc6e7d034da696563db 100644 --- a/handlers/borg.in +++ b/handlers/borg.in @@ -28,11 +28,18 @@ getconf init yes getconf include getconf exclude getconf create_options -getconf prune yes -getconf keep 30d -getconf prune_options getconf cache_directory +setsection prune +getconf prune +getconf keep_hourly +# daily is still named keep for backwards compatibility +getconf keep +getconf keep_weekly +getconf keep_monthly +getconf keep_yearly +getconf prune_options + setsection dest getconf user getconf host @@ -163,9 +170,24 @@ fi # borg prune if [ "$prune" == "yes" ]; then - if [ ! "$keep" == "0" ]; then - prune_options="${prune_options} --keep-within=${keep}" + + # add the different pruning configurations to the cmd string if set + if [ ! -z "$keep_hourly" ]; then + prune_options="${prune_options} --keep-hourly=$keep_hourly" + fi + if [ ! -z "$keep" ]; then + prune_options="${prune_options} --keep-daily=$keep" fi + if [ ! -z "$keep_weekly" ]; then + prune_options="${prune_options} --keep-weekly=$keep_weekly" + fi + if [ ! -z "$keep_monthly" ]; then + prune_options="${prune_options} --keep-monthly=$keep_monthly" + fi + if [ ! -z "$keep_yearly" ]; then + prune_options="${prune_options} --keep-yearly=$keep_yearly" + fi + prunestr="borg prune $prune_options $execstr_repository" debug "$prunestr" if [ $test = 0 ]; then