X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=backup%2Fsnaprsync;h=3e3391fb6ac6d3d7b933e7c8919ab25e044a4c4a;hb=8d1cd6396809a3d22dd6a6ff25666fec491c5a53;hp=14d471d47b6d8723280612d126113076a00bbc35;hpb=0e25760573e91f64dae336f62aa542c3fa346289;p=chiark-utils.git diff --git a/backup/snaprsync b/backup/snaprsync index 14d471d..3e3391f 100755 --- a/backup/snaprsync +++ b/backup/snaprsync @@ -1,7 +1,7 @@ #!/bin/bash # # usage: snaprsync ... -# is ---= +# is --= # are assigned to unused mandatory values in order # mandatory: # rhost device mountpoint localarea @@ -12,6 +12,7 @@ retcdir=/etc/chiark-backup rvardir=/var/lib/chiark-backup bwlimit= + subdir=. set -e @@ -27,7 +28,8 @@ while true; do value=${1#--*=} case "$name" in rhost|device|mountpoint|localarea);; - localprevious|rsharedir|retcdir|rvardir|bwlimit);; + localprevious|snapkind|rsharedir|retcdir|rvardir|bwlimit);; + subdir);; *) badusage "unknown setting $name";; esac eval "$name=\$value" @@ -71,6 +73,13 @@ mkfifo -m 600 $td/sentinel exec 4<>$td/sentinel x ssh $rhost "$sshpfx $rsharedir/snap-drop" +ssh $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<&- " $sshpfx @@ -82,21 +91,19 @@ ssh $rhost <$td/sentinel 4<&- " umask 077 exec 3>$rsumsfile cd snap-mount - $summer . | sort -t' ' -k2 >&3 - test x\"\${PIPESTATUS[*]}\" = 'x0 0' + $summer . >&3 date -u '+$rhost $datefmt sumsdone' cd .. " & xspawned rsum x $rsync -aHSxz --numeric-ids --delete \ ${localprevious:+--link-dest} $localprevious \ - $rhost:$rvardir/snap-mount/. $localarea/. + $rhost:$rvardir/snap-mount/$subdir $localarea/. date -u "+ $datefmt rsyncdone" exec 3>$localarea,lsums (cd $localarea && \ - $summer . | sort -t' ' -k2 >&3 && \ - test x"${PIPESTATUS[*]}" = 'x0 0') & + $summer . >&3) & xspawned lsum exec 3>&-