#! /bin/sh # sender-full - send backup to ssh for remote sshbkp-receiver # Copyright (C) 2001 Ed Cashin # changes by Berend de Boer # # -------------- put your email address here backuplackey=berend@pobox.com me=sender-full host=`hostname | sed 's/\..*//'` # -------------- replace "meili" with the hostname of the machine # where sshbkp-receiver will run. rhost=bmach key=/root/.ssh/sender # ---------- print a mail header to make it easy to mail this # script's output with # "sender-full | /usr/lib/sendmail -t" # cat <&1 echo ' ------------' $0 echo ' ------------ starting backup on' `date` echo ' ------------ storage host:' $rhost # backup of dumpable file systems # ----------------- these lines are from df -k output for convenience, # and the a b c d variables are dummies. # while read dev a b c d mountpt; do echo ' ------------ backing up device:' $dev mount point: $mountpt # ------- name this backup after the mount point, # turning slashes to underscores, and removing the initial # slash. # fs=`echo $mountpt | sed -e 's/^\///' -e 's/\//_/g'` if [ "$fs" = "" ]; then fs=root fi title=${host}dump-$fs # ----------- send readable output to file descriptor six, where we # copied the standard output, since we're piping the dump # to ssh on standard output # (echo $title; /sbin/dump -0u -f - $dev) 2>&6 \ | dd ibs=32k obs=32k \ | ssh -x -T -o "IdentityFile $key" $rhost || { echo $me: Error: dump $dev failed 1>&2 exit 1 } # ---------- for convenience, we feed the loop with a "here document" # that contains lines from the output of "df -k" # done << EOF /dev/hda5 14607 8035 5818 59% /boot EOF # /dev/hda6 4033040 2954488 873680 78% / # /dev/hda5 14607 8035 5818 59% /boot # backup of other file systems with cpio # use a 5120 blocksize # ----------------- these lines are from df -k output for convenience, # and the a b c d variables are dummies. # LEVEL=0 while read dev a b c d mountpt; do echo ' ------------ backing up device:' $dev mount point: $mountpt # ------- name this backup after the mount point, # turning slashes to underscores, and removing the initial # slash. # fs=`echo $mountpt | sed -e 's/^\///' -e 's/\//_/g'` if [ "$fs" = "" ]; then fs=root fi title=${host}dump-$fs touch $mountpt/DO_NOT_REMOVE.level.$LEVEL.cpio.touchfile # ----------- send readable output to file descriptor six, where we # copied the standard output, since we're piping the dump # to ssh on standard output # (echo $title; find $mountpt -depth | nice /bin/cpio -B --create --reset-access-time -c) 2>&6 \ | dd ibs=32k obs=32k \ | ssh -T -o "IdentityFile $key" $rhost || { echo $me: Error: dump $dev failed 1>&2 exit 1 } # ---------- for convenience, we feed the loop with a "here document" # that contains lines from the output of "df -k" # done << EOF EOF # /dev/hda12 3817204 2988540 828664 79% /u1 # /dev/hda9 4073212 3401076 672136 84% /u2 # /dev/hda8 5112364 4222812 889552 83% /u3 # /dev/hda10 3064300 2678056 386244 88% /u4 # /dev/hda13 4686672 3766020 686296 85% /mnt/vmware echo ' ------------ finishing backup on ' `date`