X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=chiark-utils.git;a=blobdiff_plain;f=backup%2Fsnaprsync;h=82ea5d416f8ab1dc86349b2c7287a7a3dd886626;hp=3b4bfc7954af9345580ca8b3c7436069856f20cd;hb=07abfd57eb09934ad42dd3b2b12c46ee237b4b89;hpb=330f3e99d272db13f5b392ce3243df2efa67138d diff --git a/backup/snaprsync b/backup/snaprsync index 3b4bfc7..82ea5d4 100755 --- a/backup/snaprsync +++ b/backup/snaprsync @@ -14,9 +14,35 @@ bwlimit= subdir=. rsyncopts= + rsynccompress=z sshopts= summer=summer + +# snaprsync +# +# This file is part of chiark backup, a system for backing up GNU/Linux and +# other UN*X-compatible machines, as used on chiark.greenend.org.uk. +# +# chiark backup is: +# Copyright (C) 1997-1998,2000-2001,2007 +# Ian Jackson +# Copyright (C) 1999 Peter Maydell +# +# This is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 3, or (at your option) any later version. +# +# This is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +# details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, consult the Free Software Foundation's +# website at www.fsf.org, or the GNU Project website at www.gnu.org. + + set -e badusage () { echo >&2 "snaprsync: bad usage: $1"; exit 12; } @@ -33,7 +59,7 @@ while true; do case "$name" in rhost|device|mountpoint|localarea);; localprevious|snapkind|rsharedir|retcdir|rvardir|bwlimit);; - subdir|rsyncopts|sshopts|summer);; + subdir|rsyncopts|rsynccompress|sshopts|summer);; *) badusage "unknown setting $name";; esac eval "$name=\$value" @@ -66,7 +92,7 @@ ssh $sshopts $rhost "$sshpfx ls -d $rvardir" test -d $localarea || x mkdir $localarea ournode=`uname -n` rsumsfile=for-$ournode.sums -summer="$summer -ACDbtqfx" +summer="$summer -ACDBtqfx" td=/dev/enoent rc=12 @@ -76,8 +102,8 @@ td=`mktemp -td` mkfifo -m 600 $td/sentinel exec 4<>$td/sentinel -x ssh $sshopts $rhost "$sshpfx $rsharedir/snap-drop" -ssh $sshopts $rhost " +x ssh $sshopts $rhost "$sshpfx $rsharedir/snap-drop $rvardir" +x ssh $sshopts $rhost " $sshpfx set -e cd $rvardir @@ -100,7 +126,7 @@ ssh $sshopts $rhost <$td/sentinel 4<&- " cd .. " & xspawned rsum -x $rsync -aHSxz --numeric-ids --delete $rsyncopts \ +x $rsync -aHSx$rsynccompress --numeric-ids --delete $rsyncopts \ ${localprevious:+--link-dest} $localprevious \ $rhost:$rvardir/snap-mount/$subdir $localarea/. date -u "+ $datefmt rsyncdone" @@ -114,12 +140,12 @@ exec 3>&- xwait rsum exec 4<&- date -u "+ $datefmt sumsdone" -x ssh $sshopts $rhost "$sshpfx $rsharedir/snap-drop" +x ssh $sshopts $rhost "$sshpfx $rsharedir/snap-drop $rvardir" if [ "x${localprevious}" != x ] && test -f "$localprevious,rsums"; then cp "$localprevious,rsums" "$localarea,rsums" fi -x $rsync -p \ +x $rsync -pI \ $rhost:$rvardir/$rsumsfile \ "$localarea,rsums"