ssh identity file, defaulting to the expected /root/.ssh/id_rsa. This
is important to have if you are trying to backup to a different user
on a backuphost than other handlers are using. For example, if the
rdiff handler is connecting to backalbatross@backupserver-pn using
/root/.ssh/id_rsa for public key authentication, and you want to
configure the maildir handler to connect as user
backmaildir@backupserver-pn you will might want to specify a different
identity file for that authentication (if you do not want to share the
id file between the 'backalbatross' and 'backmaildir' users).
Note: this cannot be accomplished with a ssh config file because that
file is host based, ie. you can only specify one user per host
specified in the config
getconf desthost
getconf destport 22
getconf destuser
getconf desthost
getconf destport 22
getconf destuser
+getconf destid_file /root/.ssh/id_rsa
getconf multiconnection notset
getconf multiconnection notset
testflags="--dry-run -v"
fi
testflags="--dry-run -v"
fi
-rsyncflags="$testflags -e 'ssh -p $destport' -r -v --ignore-existing --delete --size-only --bwlimit=$speedlimit"
+rsyncflags="$testflags -e 'ssh -p $destport -i $destid_file' -r -v --ignore-existing --delete --size-only --bwlimit=$speedlimit"
excludes="--exclude '.Trash/\*' --exclude '.Mistakes/\*' --exclude '.Spam/\*'"
##################################################################
excludes="--exclude '.Trash/\*' --exclude '.Mistakes/\*' --exclude '.Spam/\*'"
##################################################################
- ret=`$RSYNC -e "ssh -p $destport" -r \
+ ret=`$RSYNC -e "ssh -p $destport -i $destid_file" -r \
--links --ignore-existing --delete --size-only --bwlimit=$speedlimit \
--exclude '.Trash/*' --exclude '.Mistakes/*' --exclude '.Spam/*' \
$source $destuser@$desthost:$target \
--links --ignore-existing --delete --size-only --bwlimit=$speedlimit \
--exclude '.Trash/*' --exclude '.Mistakes/*' --exclude '.Spam/*' \
$source $destuser@$desthost:$target \
fatal "100 rsync errors -- something is not working right. bailing out."
fi
fi
fatal "100 rsync errors -- something is not working right. bailing out."
fi
fi
- ssh -o PasswordAuthentication=no $desthost -l $destuser "date +%c%n%s > $target/created"
+ ssh -o PasswordAuthentication=no $desthost -l $destuser -i $destid_file "date +%c%n%s > $target/created"
}
# remove any maildirs from backup which might have been deleted
}
# remove any maildirs from backup which might have been deleted
local tmp1=`maketemp maildir-tmp-file`
local tmp2=`maketemp maildir-tmp-file`
local tmp1=`maketemp maildir-tmp-file`
local tmp2=`maketemp maildir-tmp-file`
- ssh -p $destport $destuser@$desthost mkdir -p "$destdir/deleted"
+ ssh -p $destport -i $estid_file $destuser@$desthost mkdir -p "$destdir/deleted"
for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z; do
ls -1 "$srcdir/$i/" | sort > $tmp1
ssh -p $destport $destuser@$desthost ls -1 "$destdir/$i/" | sort > $tmp2
for deluser in `join -v 2 $tmp1 $tmp2`; do
[ "$deluser" != "" ] || continue
info "removing $destuser@$desthost:$destdir/$i/$deluser/"
for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z; do
ls -1 "$srcdir/$i/" | sort > $tmp1
ssh -p $destport $destuser@$desthost ls -1 "$destdir/$i/" | sort > $tmp2
for deluser in `join -v 2 $tmp1 $tmp2`; do
[ "$deluser" != "" ] || continue
info "removing $destuser@$desthost:$destdir/$i/$deluser/"
- ssh -p $destport $destuser@$desthost mv "$destdir/$i/$deluser/" "$destdir/deleted"
- ssh -p $destport $destuser@$desthost "date +%c%n%s > '$destdir/$i/$deluser/deleted_on'"
+ ssh -p $destport -i $destid_file $destuser@$desthost mv "$destdir/$i/$deluser/" "$destdir/deleted"
+ ssh -p $destport -i $destid_file $destuser@$desthost "date +%c%n%s > '$destdir/$i/$deluser/deleted_on'"
local letter=${user:0:1}
local backuproot="$destdir/$letter/$user"
(
local letter=${user:0:1}
local backuproot="$destdir/$letter/$user"
(
- ssh -T -o PasswordAuthentication=no $desthost -l $destuser <<EOF
+ ssh -T -o PasswordAuthentication=no $desthost -l $destuser -i $destid_file <<EOF
##### BEGIN REMOTE SCRIPT #####
seconds_daily=86400
seconds_weekly=604800
##### BEGIN REMOTE SCRIPT #####
seconds_daily=86400
seconds_weekly=604800
local dir="$destdir/$letter/$user/$backuptype"
local tmpdir="$destdir/$letter/$user/rotate.tmp"
(
local dir="$destdir/$letter/$user/$backuptype"
local tmpdir="$destdir/$letter/$user/rotate.tmp"
(
- ssh -T -o PasswordAuthentication=no $desthost -l $destuser <<EOF
+ ssh -T -o PasswordAuthentication=no $desthost -l $destuser -i $destid_file <<EOF
if [ ! -d $destdir ]; then
echo "Fatal: Destination directory $destdir does not exist on host $desthost."
exit 1
if [ ! -d $destdir ]; then
echo "Fatal: Destination directory $destdir does not exist on host $desthost."
exit 1
function start_mux() {
if [ "$multiconnection" == "yes" ]; then
debug "Starting dummy ssh connection"
function start_mux() {
if [ "$multiconnection" == "yes" ]; then
debug "Starting dummy ssh connection"
- ssh -p $destport $destuser@$desthost sleep 1d &
+ ssh -p $destport -i $destid_file $destuser@$desthost sleep 1d &
function end_mux() {
if [ "$multiconnection" == "yes" ]; then
debug "Stopping dummy ssh connection"
function end_mux() {
if [ "$multiconnection" == "yes" ]; then
debug "Stopping dummy ssh connection"
- ssh -p $destport $destuser@$desthost pkill sleep
+ ssh -p $destport -i $destid_file $destuser@$desthost pkill sleep
##################################################################
# see if we can login
##################################################################
# see if we can login
-debug "ssh -o PasswordAuthentication=no $desthost -l $destuser 'echo -n 1'"
+debug "ssh -o PasswordAuthentication=no $desthost -l $destuser -i $destid_file 'echo -n 1'"
- result=`ssh -o PasswordAuthentication=no $desthost -l $destuser 'echo -n 1' 2>&1`
+ result=`ssh -o PasswordAuthentication=no $desthost -l $destuser -i $destid_file 'echo -n 1' 2>&1`
if [ "$result" != "1" ]; then
if [ "$result" != "1" ]; then
- fatal "Can't connect to $desthost as $destuser."
+ fatal "Can't connect to $desthost as $destuser using $destid_file."
start_mux
## SANITY CHECKS ##
start_mux
## SANITY CHECKS ##
-status=`ssh -p $destport $destuser@$desthost "[ -d \"$destdir\" ] && echo 'ok'"`
+status=`ssh -p $destport -i $destid_file $destuser@$desthost "[ -d \"$destdir\" ] && echo 'ok'"`
if [ "$status" != "ok" ]; then
end_mux
fatal "Destination directory $destdir doesn't exist!"
if [ "$status" != "ok" ]; then
end_mux
fatal "Destination directory $destdir doesn't exist!"