chiark / gitweb /
chiark-backup's snaprsync has new sshopts option.
[chiark-utils.git] / backup / snaprsync
index e31c27b..3b4bfc7 100755 (executable)
@@ -14,6 +14,7 @@
        bwlimit=
        subdir=.
        rsyncopts=
+       sshopts=
        summer=summer
 
 set -e
@@ -32,7 +33,7 @@ while true; do
                case "$name" in
                rhost|device|mountpoint|localarea);;
                localprevious|snapkind|rsharedir|retcdir|rvardir|bwlimit);;
-               subdir|rsyncopts|summer);;
+               subdir|rsyncopts|sshopts|summer);;
                *) badusage "unknown setting $name";;
                esac
                eval "$name=\$value"
@@ -54,18 +55,18 @@ done
 
 datefmt='%Y-%m-%d %H:%M:%S Z'
 rsync="rsync ${bwlimit:+--bwlimit} $bwlimit"
-export RSYNC_RSH='ssh -o compression=no'
+export RSYNC_RSH="ssh -o compression=no $sshopts"
 sshpfx='PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin; export PATH; '
 
-ssh $rhost "$sshpfx date -u '+$rhost $datefmt start'"
-ssh $rhost "$sshpfx id"
-ssh $rhost "$sshpfx ls -d $rsharedir"
-ssh $rhost "$sshpfx ls -d $rvardir"
+ssh $sshopts $rhost "$sshpfx date -u '+$rhost $datefmt start'"
+ssh $sshopts $rhost "$sshpfx id"
+ssh $sshopts $rhost "$sshpfx ls -d $rsharedir"
+ssh $sshopts $rhost "$sshpfx ls -d $rvardir"
 
 test -d $localarea || x mkdir $localarea
 ournode=`uname -n`
 rsumsfile=for-$ournode.sums
-summer="$summer -ACDbtqf"
+summer="$summer -ACDbtqfx"
 
 td=/dev/enoent
 rc=12
@@ -75,16 +76,16 @@ td=`mktemp -td`
 mkfifo -m 600 $td/sentinel
 exec 4<>$td/sentinel
 
-x ssh $rhost "$sshpfx $rsharedir/snap-drop"
-ssh $rhost "
+x ssh $sshopts $rhost "$sshpfx $rsharedir/snap-drop"
+ssh $sshopts $rhost "
        $sshpfx
        set -e
        cd $rvardir
        echo '$retcdir/snap/$snapkind drop $rvardir' >snap-drop.new
        mv snap-drop.new snap-drop
 "
-x ssh $rhost "$sshpfx $retcdir/snap/$snapkind snap $rvardir $device $mountpoint"
-ssh $rhost <$td/sentinel 4<&- "
+x ssh $sshopts $rhost "$sshpfx $retcdir/snap/$snapkind snap $rvardir $device $mountpoint"
+ssh $sshopts $rhost <$td/sentinel 4<&- "
   $sshpfx
   set -e
   date -u '+$rhost $datefmt main'
@@ -113,7 +114,7 @@ exec 3>&-
 xwait rsum
 exec 4<&-
 date -u "+ $datefmt sumsdone"
-x ssh $rhost "$sshpfx $rsharedir/snap-drop"
+x ssh $sshopts $rhost "$sshpfx $rsharedir/snap-drop"
 
 if [ "x${localprevious}" != x ] && test -f "$localprevious,rsums"; then
        cp "$localprevious,rsums" "$localarea,rsums"
@@ -126,7 +127,8 @@ xwait $lsum
 date -u "+ $datefmt checking"
 
 set +e
-diff -u "$localarea,rsums" "$localarea,lsums" >"$localarea,sumsdiff"
+diff -u <(sed -e 's/^mountpoint/dir       /' "$localarea,rsums") \
+  "$localarea,lsums" >"$localarea,sumsdiff"
 diffrc=$?
 set -e
 test $diffrc = 0 || test $diffrc = 1