aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Berger <oberger@ouvaton.org>2010-11-21 10:07:36 +0100
committerOlivier Berger <oberger@ouvaton.org>2011-04-25 22:40:44 +0200
commita1c2229e1a0d476fc02626f1326fa263955b17ee (patch)
tree4f76e3ac412edc7d942d6d8a2c3aa070084f80c3
parent6aca9c822b640372b0fad24d2a3a288ef2cd6a0f (diff)
downloadbackupninja-a1c2229e1a0d476fc02626f1326fa263955b17ee.tar.gz
backupninja-a1c2229e1a0d476fc02626f1326fa263955b17ee.tar.bz2
Proposed feature to address https://labs.riseup.net/code/issues/2492
-rw-r--r--ChangeLog3
-rw-r--r--handlers/dup.helper.in14
-rw-r--r--handlers/dup.in25
3 files changed, 40 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 29ce38d..8d2ed5c 100644
--- 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:
diff --git a/handlers/dup.helper.in b/handlers/dup.helper.in
index 5cd9dc6..2594b0b 100644
--- a/handlers/dup.helper.in
+++ b/handlers/dup.helper.in
@@ -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".
diff --git a/handlers/dup.in b/handlers/dup.in
index 1d345a3..b58d34d 100644
--- a/handlers/dup.in
+++ b/handlers/dup.in
@@ -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