aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorintrigeri <intrigeri@boum.org>2010-01-09 23:14:17 +0100
committerintrigeri <intrigeri@boum.org>2010-01-09 23:14:17 +0100
commit64c4d190a3ab6b4fa60b10208b32f3b270a72482 (patch)
tree9eb0836af6a9576e0a5d415d0a92ba2c153f3e05
parent0fbd8744f5c10649b7239c3199dae229a30e10a9 (diff)
downloadbackupninja-64c4d190a3ab6b4fa60b10208b32f3b270a72482.tar.gz
backupninja-64c4d190a3ab6b4fa60b10208b32f3b270a72482.tar.bz2
dup: support backups to Amazon S3 buckets
Thanks to stefan <s.freudenberg@jpberlin.de> for the patch. This fixes Redmine bug #658.
-rw-r--r--AUTHORS3
-rw-r--r--ChangeLog1
-rw-r--r--README10
-rw-r--r--examples/example.dup12
-rw-r--r--handlers/dup.helper.in6
-rw-r--r--handlers/dup.in11
6 files changed, 42 insertions, 1 deletions
diff --git a/AUTHORS b/AUTHORS
index 89b505f..c8686eb 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -30,4 +30,5 @@ Matthew Palmer <mpalmer@debian.org> -- halt loglevel feature
dan@garthwaite.org -- reportspace bugfix
Tuomas Jormola <tj@solitudo.net> -- "when = manual" option
Ian Beckwith <ianb@erislabs.net> -- dup bandwidthlimit fix
-Olivier Berger <oberger@ouvaton.org> -- dup debug output bugfix, reportinfo option \ No newline at end of file
+Olivier Berger <oberger@ouvaton.org> -- dup debug output bugfix, reportinfo option
+stefan <s.freudenberg@jpberlin.de> -- dup support for Amazon S3 buckets
diff --git a/ChangeLog b/ChangeLog
index 12c1436..f4009d7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -59,6 +59,7 @@ version 0.9.7 -- UNRELEASED
. Report duplicity output as "info" so that it can be included in
report e-mail when reportinfo is on (Closes: #563734)
. Fix include/exclude paths with spaces
+ . Support backups to Amazon S3 buckets, thanks to stefan for the patch.
helper changes
dup:
. Do not propose to exclude /home/*/.gnupg twice anymore
diff --git a/README b/README
index 03d96fe..04eda2f 100644
--- a/README
+++ b/README
@@ -182,6 +182,16 @@ blank by hitting return.
The included helper program "ninjahelper" will walk you through creating
an rdiff-backup configuration, and will set up the ssh keys for you.
+
+Amazon Simple Storage Service (S3)
+==================================
+
+Duplicity can store backups on Amazon S3 buckets, taking care of encryption.
+Since it performs incremental backups it minimizes the number of request per
+operation therefore reducing the costs. The boto Python interface to Amazon
+Web Services is needed to use duplicity with S3 (Debian package: python-boto).
+
+
INSTALLATION
============
diff --git a/examples/example.dup b/examples/example.dup
index 2b59fe5..ea4d66e 100644
--- a/examples/example.dup
+++ b/examples/example.dup
@@ -8,6 +8,8 @@
## passed directly to duplicity, e.g. to increase verbosity set this to:
## options = --verbosity 8
+## when using the Amazon S3 backend to create buckets in Europe:
+## options = --s3-european-buckets --s3-use-new-style
##
## Default:
# options =
@@ -158,11 +160,21 @@ exclude = /home/*/.gnupg
## examples include:
## desturl = file:///usr/local/backup
## desturl = rsync://user@other.host//var/backup/bla
+## desturl = s3+http://
## the default value of this configuration option is not set:
##
## Default:
# desturl =
+## Amazon Web Services Access Key ID and Secret Access Key, needed for backups
+## to S3 buckets.
+## awsaccesskeyid = YOUR_AWS_ACCESS_KEY_ID
+## awssecretaccesskey = YOUR_AWS_SECRET_KEY
+##
+## Default:
+# awsaccesskeyid =
+# awssecretaccesskey =
+
## bandwith limit, in kbit/s ; default is 0, i.e. no limit an example
## setting would be:
## bandwidthlimit = 128
diff --git a/handlers/dup.helper.in b/handlers/dup.helper.in
index 2fafb99..ae48e4c 100644
--- a/handlers/dup.helper.in
+++ b/handlers/dup.helper.in
@@ -403,6 +403,12 @@ keep = $dup_keep
# bandwithlimit. For details, see duplicity manpage, section "URL FORMAT".
#desturl = file:///usr/local/backup
#desturl = rsync://user@other.host//var/backup/bla
+#desturl = s3+http://your_bucket
+
+# Amazon Web Services Access Key ID and Secret Access Key, needed for backups
+# to S3 buckets.
+#awsaccesskeyid = YOUR_AWS_ACCESS_KEY_ID
+#awssecretaccesskey = YOUR_AWS_SECRET_KEY
# bandwith limit, in kbit/s ; default is 0, i.e. no limit
#bandwidthlimit = 128
diff --git a/handlers/dup.in b/handlers/dup.in
index 2f55b9c..ffae48c 100644
--- a/handlers/dup.in
+++ b/handlers/dup.in
@@ -26,6 +26,8 @@ setsection dest
getconf incremental yes
getconf keep 60
getconf desturl
+getconf awsaccesskeyid
+getconf awssecretaccesskey
getconf sshoptions
getconf bandwidthlimit 0
getconf desthost
@@ -38,6 +40,9 @@ destdir=${destdir%/}
[ -n "$desturl" -o -n "$destdir" ] || fatal "The destination directory (destdir) must be set when desturl is not used."
[ -n "$include" -o -n "$vsinclude" ] || fatal "No source includes specified"
[ -n "$password" ] || fatal "The password option must be set."
+if [ "`echo $desturl | @AWK@ -F ':' '{print $1}'`" == "s3+http" ]; then
+ [ -n "$awsaccesskeyid" -a -n "$awssecretaccesskey" ] || fatal "AWS access keys must be set for S3 backups."
+fi
### VServers
# If vservers are configured, check that the ones listed in $vsnames do exist.
@@ -227,6 +232,12 @@ set +o noglob
execstr_source=${execstr_source//\\*/\\\\\\*}
+### If desturl is an S3 URL export the AWS environment variables
+if [ "`echo $desturl | @AWK@ -F ':' '{print $1}'`" == "s3+http" ]; then
+ export AWS_ACCESS_KEY_ID="$awsaccesskeyid"
+ export AWS_SECRET_ACCESS_KEY="$awssecretaccesskey"
+fi
+
### Cleanup commands (duplicity >= 0.4.4)
# cleanup