diff --git a/examples/example.borg b/examples/example.borg index 8644cbc..e5285f4 100644 --- a/examples/example.borg +++ b/examples/example.borg @@ -41,16 +41,6 @@ ## Default: # init = yes -## how many hours, days, weeks and months of data to keep -## -## for more info see : borg help prune -## -## Default: -# keephourly = 1 -# keepdaily = 7 -# keepweekly = 4 -# keepmonthly = -1 - ## A few notes about includes and excludes: ## 1. include paths do not support any kind of pattern matching ## 2. exclude paths support several types of pattern matching, the default being @@ -90,6 +80,33 @@ exclude = /var/lib/mysql ## Default: # excludenodump = no +## whether to prune (remove) older backups +## +## Default: +# prune = yes + +## keep all backups within this time frame. +## must be defined as a number followed by one of the +## following characters: "H", "d", "w", "m", "y" +## +## this option will be ignored if set to 0 +## +## the default is to keep all backups made within the +## last 30 days +## +## Default: +# keep = 30d + +## define extra command-line options for the "borg prune" operation. +## +## Example: +## prune_options = --keep-daily=7 --keep-weekly=4 --keep-monthly=6 +## +## for more info see : borg help prune +## +## Default: +# prune_options = + ###################################################### ## destination section ## (where the files are copied to) diff --git a/handlers/borg.helper.in b/handlers/borg.helper.in index a4cd89e..d042198 100644 --- a/handlers/borg.helper.in +++ b/handlers/borg.helper.in @@ -270,19 +270,13 @@ do_borg_prune() { declare -a tmp_array set -o noglob REPLY= - formBegin "$borg_title - pruning (how many backups to keep)" - formItem "hourly" "$borg_keephourly" - formItem "daily" "$borg_keepdaily" - formItem "weekly" "$borg_keepweekly" - formItem "monthly" "$borg_keepmonthly" + formBegin "$borg_title - keep all backups made within this number of days" + formItem "keep" "$borg_keep" formDisplay [ $? = 0 ] || return tmp_array=($REPLY) - borg_keephourly=${tmp_array[0]} - borg_keepdaily=${tmp_array[1]} - borg_keepweekly=${tmp_array[2]} - borg_keepmonthly=${tmp_array[3]} + borg_keep=${tmp_array[0]} set +o noglob fi @@ -317,10 +311,7 @@ EOF ## for more info see : borg prune -h prune = $borg_prune -keephourly = $borg_keephourly -keepdaily = $borg_keepdaily -keepweekly = $borg_keepweekly -keepmonthly = $borg_keepmonthly +keep = "${borg_keep}d" [dest] directory = $borg_directory @@ -386,10 +377,7 @@ borg_wizard() { borg_compression=lz4 borg_encryption=none borg_passphrase= - borg_keephourly=1 - borg_keepdaily=7 - borg_keepweekly=4 - borg_keepmonthly=-1 + borg_keep=30 # Global variables whose '*' shall not be expanded set -o noglob diff --git a/handlers/borg.in b/handlers/borg.in index 698ba6d..0ca54c7 100644 --- a/handlers/borg.in +++ b/handlers/borg.in @@ -24,15 +24,13 @@ getconf bwlimit setsection source getconf init yes -getconf prune yes -getconf keephourly 1 -getconf keepdaily 7 -getconf keepweekly 4 -getconf keepmonthly -1 getconf include getconf exclude getconf excludecaches no getconf excludenodump no +getconf prune yes +getconf keep 30d +getconf prune_options setsection dest getconf user @@ -153,8 +151,11 @@ fi # borg prune if [ "$prune" == "yes" ]; then - prunestr="borg prune --keep-hourly $keephourly --keep-daily $keepdaily --keep-weekly $keepweekly --keep-monthly $keepmonthly $execstr_repository" - debug "$prunestr" + if [ ! -z $keep ] && [ ! "$keep" == "0" ]; then + prune_options="${prune_options} --keep-within=${keep}" + fi + prunestr="borg prune $prune_options $execstr_repository" + debug "$prunestr" if [ $test = 0 ]; then output="`su -c "$prunestr" 2>&1`" if [ $? = 0 ]; then