diff options
author | Micah Anderson <micah@riseup.net> | 2009-07-09 19:00:41 -0400 |
---|---|---|
committer | Micah Anderson <micah@riseup.net> | 2009-07-09 19:00:41 -0400 |
commit | 8000beda168ec59df4f8cc69e72cb6e9722368eb (patch) | |
tree | e1266648740e1449a916ba31c618f1aba2774146 | |
parent | 78884142e7cdaaf3e1f5571b1f28d2ea5a520b30 (diff) | |
download | backupninja-8000beda168ec59df4f8cc69e72cb6e9722368eb.tar.gz backupninja-8000beda168ec59df4f8cc69e72cb6e9722368eb.tar.bz2 |
added sshoptions variable to the maildir handler for arbitrary options that you might need to pass
updated the example.maildir to include this option, as well as detail the missing desid_file, destport
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | examples/example.maildir | 10 | ||||
-rw-r--r-- | handlers/maildir.in | 29 |
3 files changed, 27 insertions, 14 deletions
@@ -9,6 +9,8 @@ version 0.9.7 -- UNRELEASED maildir: . fix location of deleted_on file . add missing destid_file options to ssh connections + . added sshoptions variable for arbitrary ssh options + . updated example file to include destid_file, destport and sshoptions mysql: . Options passed to mysqldump are now customizable with the new sqldumpoptions configuration variable. Thanks to Chris Lamb for his diff --git a/examples/example.maildir b/examples/example.maildir index 8898a78..eba5429 100644 --- a/examples/example.maildir +++ b/examples/example.maildir @@ -50,6 +50,16 @@ desthost = kakapo-pn # arbitrary bash commands on the desthost. destuser = backer +# For alternate ports from the default 22, specify here +destport = 4444 + +# If you need to specify an alternate ssh public key authentication file +# do that here. Default: /root/.ssh/id_rsa +destid_file = /home/backupkeys/.ssh/maildirbackup_id_rsa + +# If you need to specify other ssh configuration options, do that here +sshoptions = "-C -6" + # remove any maildirs from backup which might have been deleted remove = yes diff --git a/handlers/maildir.in b/handlers/maildir.in index ab72ce1..148c30d 100644 --- a/handlers/maildir.in +++ b/handlers/maildir.in @@ -69,6 +69,7 @@ getconf desthost getconf destport 22 getconf destuser getconf destid_file /root/.ssh/id_rsa +getconf sshoptions getconf multiconnection notset @@ -85,7 +86,7 @@ if [ $test ]; then testflags="--dry-run -v" fi -rsyncflags="$testflags -e 'ssh -p $destport -i $destid_file' -r -v --ignore-existing --delete --size-only --bwlimit=$speedlimit" +rsyncflags="$testflags -e 'ssh -p $destport -i $destid_file $sshoptions' -r -v --ignore-existing --delete --size-only --bwlimit=$speedlimit" excludes="--exclude '.Trash/\*' --exclude '.Mistakes/\*' --exclude '.Spam/\*'" ################################################################## @@ -103,7 +104,7 @@ function do_user() { fi debug "syncing" - ret=`$RSYNC -e "ssh -p $destport -i $destid_file" -r \ + ret=`$RSYNC -e "ssh -p $destport -i $destid_file $sshoptions" -r \ --links --ignore-existing --delete --size-only --bwlimit=$speedlimit \ --exclude '.Trash/*' --exclude '.Mistakes/*' --exclude '.Spam/*' \ $source $destuser@$desthost:$target \ @@ -118,7 +119,7 @@ function do_user() { fatal "100 rsync errors -- something is not working right. bailing out." fi fi - ssh -o PasswordAuthentication=no $desthost -l $destuser -i $destid_file "date +%c%n%s > $target/created" + ssh -o PasswordAuthentication=no $desthost -l $destuser -i $destid_file $sshoptions "date +%c%n%s > $target/created" } # remove any maildirs from backup which might have been deleted @@ -129,16 +130,16 @@ function do_remove() { local tmp1=`maketemp maildir-tmp-file` local tmp2=`maketemp maildir-tmp-file` - ssh -p $destport -i $destid_file $destuser@$desthost mkdir -p "$destdir/deleted" + ssh -p $destport -i $destid_file $sshoptions $destuser@$desthost mkdir -p "$destdir/deleted" cd "$srcdir" for userdir in `ls -d1 */`; do ls -1 "$srcdir/$userdir" | sort > $tmp1 - ssh -p $destport -i $destid_file $destuser@$desthost ls -1 "$destdir/$userdir" | sort > $tmp2 + ssh -p $destport -i $destid_file $sshoptions $destuser@$desthost ls -1 "$destdir/$userdir" | sort > $tmp2 for deluser in `join -v 2 $tmp1 $tmp2`; do [ "$deluser" != "" ] || continue info "removing $destuser@$desthost:$destdir/$userdir$deluser/" - ssh -p $destport -i $destid_file $destuser@$desthost mv "$destdir/$userdir$deluser/" "$destdir/deleted" - ssh -p $destport -i $destid_file $destuser@$desthost "date +%c%n%s > '$destdir/deleted/$deluser/deleted_on'" + ssh -p $destport -i $destid_file $sshoptions $destuser@$desthost mv "$destdir/$userdir$deluser/" "$destdir/deleted" + ssh -p $destport -i $destid_file $sshoptions $destuser@$desthost "date +%c%n%s > '$destdir/deleted/$deluser/deleted_on'" done done rm $tmp1 @@ -151,7 +152,7 @@ function do_rotate() { local userdir=${2%/} local backuproot="$destdir/$userdir/$user" ( - ssh -T -o PasswordAuthentication=no $desthost -l $destuser -i $destid_file <<EOF + ssh -T -o PasswordAuthentication=no $desthost -l $destuser -i $destid_file $sshoptions <<EOF ##### BEGIN REMOTE SCRIPT ##### seconds_daily=86400 seconds_weekly=604800 @@ -250,7 +251,7 @@ function setup_remote_dirs() { local dir="$destdir/$userdir/$user/$backuptype" local tmpdir="$destdir/$userdir/$user/rotate.tmp" ( - ssh -T -o PasswordAuthentication=no $desthost -l $destuser -i $destid_file <<EOF + ssh -T -o PasswordAuthentication=no $desthost -l $destuser -i $destid_file $sshoptions <<EOF if [ ! -d $destdir ]; then echo "Fatal: Destination directory $destdir does not exist on host $desthost." exit 1 @@ -295,7 +296,7 @@ EOF function start_mux() { if [ "$multiconnection" == "yes" ]; then debug "Starting dummy ssh connection" - ssh -p $destport -i $destid_file $destuser@$desthost sleep 1d & + ssh -p $destport -i $destid_file $sshoptions $destuser@$desthost sleep 1d & sleep 1 fi } @@ -303,7 +304,7 @@ function start_mux() { function end_mux() { if [ "$multiconnection" == "yes" ]; then debug "Stopping dummy ssh connection" - ssh -p $destport -i $destid_file $destuser@$desthost pkill sleep + ssh -p $destport -i $destid_file $sshoptions $destuser@$desthost pkill sleep fi } @@ -311,9 +312,9 @@ function end_mux() { ################################################################## # see if we can login -debug "ssh -o PasswordAuthentication=no $desthost -l $destuser -i $destid_file 'echo -n 1'" +debug "ssh -o PasswordAuthentication=no $desthost -l $destuser -i $destid_file $sshoptions 'echo -n 1'" if [ ! $test ]; then - result=`ssh -o PasswordAuthentication=no $desthost -l $destuser -i $destid_file 'echo -n 1' 2>&1` + result=`ssh -o PasswordAuthentication=no $desthost -l $destuser -i $destid_file $sshoptions 'echo -n 1' 2>&1` if [ "$result" != "1" ]; then fatal "Can't connect to $desthost as $destuser using $destid_file." fi @@ -323,7 +324,7 @@ end_mux start_mux ## SANITY CHECKS ## -status=`ssh -p $destport -i $destid_file $destuser@$desthost "[ -d \"$destdir\" ] && echo 'ok'"` +status=`ssh -p $destport -i $destid_file $sshoptions $destuser@$desthost "[ -d \"$destdir\" ] && echo 'ok'"` if [ "$status" != "ok" ]; then end_mux fatal "Destination directory $destdir doesn't exist!" |