]> gitweb.fluxo.info Git - backupninja.git/commitdiff
Proposed feature to address https://labs.riseup.net/code/issues/2492
authorOlivier Berger <oberger@ouvaton.org>
Sun, 21 Nov 2010 09:07:36 +0000 (10:07 +0100)
committerOlivier Berger <oberger@ouvaton.org>
Mon, 25 Apr 2011 20:40:44 +0000 (22:40 +0200)
ChangeLog
handlers/dup.helper.in
handlers/dup.in

index 29ce38d6faac2a16016857e70a4d0403f16e3c48..8d2ed5cfd826bcbc46620f01affc68d88f2faa82 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -11,6 +11,9 @@ version 0.9.9 -- UNRELEASED
           (Closes Roundup bug #598)
         . Remove support for duplicity < 0.4.4. Even etch-backports has
           a newer one.
+        . Now support remove-all-but-n-full command for duplicity >=
+          0.9.10 to allow removal of increments for older full backups
+           (Closes #2492)
        ldap:
         . Fix reliance on bash for pipefail.
        mysql:
index 5cd9dc608e73fbf4388023611346307e8eb7070b..2594b0b113efe678dbe2d68c12e1c7491a74706c 100644 (file)
@@ -124,6 +124,7 @@ do_dup_dest() {
         formItem "keep" "$dup_keep"
         formItem "incremental" "$dup_incremental"
         formItem "increments" "$dup_increments"
+        formItem "keepincroffulls" "$dup_keepincroffulls"
         formItem "bandwidthlimit" "$dup_bandwidth"
         formItem "sshoptions" "$dup_sshoptions"
       formDisplay
@@ -141,8 +142,9 @@ do_dup_dest() {
       dup_keep=${thereply[3]}
       dup_incremental=${thereply[4]}
       dup_increments=${thereply[5]}
-      dup_bandwidth=${thereply[6]}
-      dup_sshoptions=${thereply[7]}
+      dup_keepincroffulls=${thereply[6]}
+      dup_bandwidth=${thereply[7]}
+      dup_sshoptions=${thereply[8]}
 
    done
    set +o noglob
@@ -424,6 +426,14 @@ increments = $dup_increments
 #keep = yes
 keep = $dup_keep
 
+# for how many full backups do we keep their later increments ;
+# default is all (keep all increments).
+# increments for older full backups will be deleted : only the more
+# recent ones (count provided) will be kept
+#keepincrofulls = all
+#keepincrofulls = 6
+keepincrofulls = $dup_keepincroffulls
+
 # full destination URL, in duplicity format; if set, desturl overrides
 # sshoptions, destdir, desthost and destuser; it also disables testconnect and
 # bandwithlimit. For details, see duplicity manpage, section "URL FORMAT".
index 1d345a3d32c27eb05ebcb692925ad1f03c5e3890..b58d34d80908e3e0780501292d622c788da78fd0 100644 (file)
@@ -26,6 +26,7 @@ setsection dest
 getconf incremental yes
 getconf increments 30
 getconf keep 60
+getconf keepincroffulls all
 getconf desturl
 getconf awsaccesskeyid
 getconf awssecretaccesskey
@@ -275,6 +276,30 @@ if [ "$keep" != "yes" ]; then
    fi
 fi
 
+# remove-all-inc-of-but-n-full : remove increments of older full backups : only keep latest ones
+if [ "$keep" != "yes" ]; then
+   if [ "$keepincroffulls" != "all" ]; then
+      if [ "$duplicity_major" -ge 0 -a "$duplicity_minor" -ge 9 -a "$duplicity_sub" -ge 10 ]; then
+         debug "$precmd duplicity remove-all-inc-of-but-n-full $keepincroffulls --force $execstr_options $execstr_serverpart"
+         if [ ! $test ]; then
+            export PASSPHRASE=$password
+            export FTP_PASSWORD=$ftp_password
+            output=`nice -n $nicelevel \
+               su -c \
+               "$precmd duplicity remove-all-inc-of-but-n-full $keepincroffulls --force $execstr_options $execstr_serverpart 2>&1"`
+            exit_code=$?
+            if [ $exit_code -eq 0 ]; then
+               debug $output
+               info "Duplicity remove-all-inc-of-but-n-full finished successfully."
+            else
+               debug $output
+               warning "Duplicity remove-all-inc-of-but-n-full failed."
+            fi
+         fi
+      fi
+   fi
+fi
+
 ### Backup command
 debug "duplicity $execstr_command $execstr_options $execstr_source --exclude '**' / $execstr_serverpart"
 if [ ! $test ]; then