aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMicah Anderson <micah@riseup.net>2009-07-09 19:00:41 -0400
committerMicah Anderson <micah@riseup.net>2009-07-09 19:00:41 -0400
commit8000beda168ec59df4f8cc69e72cb6e9722368eb (patch)
treee1266648740e1449a916ba31c618f1aba2774146
parent78884142e7cdaaf3e1f5571b1f28d2ea5a520b30 (diff)
downloadbackupninja-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--ChangeLog2
-rw-r--r--examples/example.maildir10
-rw-r--r--handlers/maildir.in29
3 files changed, 27 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index f1daeb9..74cc3ca 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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!"