3 # usage: snaprsync <setting>... <positionals>
4 # <setting> is ---<name>=<value>
5 # <positionals> are assigned to unused mandatory values in order
7 # rhost device mountpoint localarea
11 rsharedir=/usr/share/chiark-backup
12 retcdir=/etc/chiark-backup
13 rvardir=/var/lib/chiark-backup
15 badusage () { echo >&2 "snaprsync: bad usage: $1"; exit 12; }
16 x () { echo "+ $@"; "$@"; }
21 name=${1#--}; name=${name%%=*}
24 rhost|device|mountpoint|localarea);;
25 localprevious|rsharedir|retcdir|rvardir);;
26 *) badusage "unknown setting $name";;
31 -*) badusage "unknown option $1" ;;
37 for name in rhost device mountpoint localarea; do
39 if [ "x$value" != x ]; then continue; fi
40 if [ $# = 0 ]; then badusage "no value for setting $name"; fi
45 datefmt='%Y-%m-%d %H:%M:%S Z'
47 ssh $rhost "date -u '+$rhost $datefmt'"
49 ssh $rhost ls -d $rsharedir
50 ssh $rhost ls -d $rvardir
52 test -d $localarea || x mkdir $localarea
54 rsumsfile=for-$ournode.sums
56 x ssh $rhost "$rsharedir/snap-drop"
57 x ssh $rhost "$retcdir/snap/$snapkind snap $rvardir $device $mountpoint"
65 date -u +'sums done $datefmt'
68 fixme kill this thing if we die
70 RSYNC_RSH='ssh -o compression=no' \
71 x rsync -aHSxz --numeric-ids --delete \
72 ${localprevious:+--link-dest} $localprevious \
73 $rhost:$rvardir/snap-mount/. $localarea/.
75 x ssh $rhost "$rsharedir/snap-drop"
76 RSYNC_RSH=ssh rsync -p
77 fixme use localprevious,rsums as seed if available
78 $rhost:$rvardir/$rsumsfile $localarea,rsums