Date: Fri, 16 May 2003 02:40:22 -0400 From: Chuck Swiger <cswiger@mac.com> To: freebsd@werosoft.com Cc: freebsd-questions@freebsd.org Subject: Backup script, was: Re: storage data Message-ID: <3EC487D6.5030806@mac.com> In-Reply-To: <3EC16C98.11161.4AB9BB@localhost> References: <3EC16C98.11161.4AB9BB@localhost>
next in thread | previous in thread | raw e-mail | index | archive | help
Ronald Weinrich wrote: [ ... ] > has any one a script written, to pull data from host-a to host-b, tar it on > host-b in regular (cron) time. Rsync is your friend; so are more serious backup tools like Amanda, Retrospect, and even Legato Networker. That being said, here's a shell script that you might find useful. Enjoy! -Chuck ============== #! /bin/sh #### # # Backup script. Takes SSH key as the first argument, then a list of # one or more hostnames to backup. This script removes slashes found # in hostnames and tests whether a host is pingable before trying to # operate on that host. # # In other words, if you configure one host at a time to backup okay # by adjusting SSH keys and such, running "./backup.sh _ident_ *.com" # at a later date will backup all of the hosts manually configured # automaticly. If a host is down, it will be skipped without its # files being deleted by the "rsync --delete" or "rm" commands # (if enabled; see below). # # Copyright (c) 2003. Charles Swiger <chuck@pkix.net> # $Id: backup.sh,v 1.2 2003/05/16 06:22:03 chuck Exp $ # #### if [ $# -lt 2 ]; then echo "Usage: backup.sh <SSH key> <host1> [<host2>...]" exit 1 fi ID=${1} shift echo "Authenticating via SSH key id: ${ID}" echo PATH=/usr/local/bin:/usr/bin:/usr/sbin:/usr/libexec:/usr/lib:/bin:/sbin MKDIR="mkdir -p" RM="/bin/rm -rf" RSYNC_RSH="ssh -i ${ID}" export RSYNC_RSH COPY="rsync -aqRC --copy-unsafe-links --delete" # Alternative COPY version if you don't have or want to use rsync: # COPY="scp -rq -i ${ID}" # Loop through all of the remaing arguments, and test whether reachable for name ; do CLIENT=`echo "$name" | tr -d '/'` if { ! /sbin/ping -q -c 1 -t 10 ${CLIENT} > /dev/null ; } then echo "${CLIENT} is unpingable and may be down. Consult errors above." continue fi echo "Backing up ${CLIENT} at `date`." # This is the destination to backup the client to. DESTROOT=/export/Backups/"${CLIENT}"/ #### # DANGEROUS: (optionally) completely clean contents first? # # You will probably be sorry if you leave this enabled and run # backups via cron. Only turn this on when running by hand. # ${RM} ${DESTROOT} #### ${MKDIR} ${DESTROOT} ${COPY} ${CLIENT}:/etc ${DESTROOT} 2> /dev/null ${COPY} ${CLIENT}:/var/log ${DESTROOT} 2> /dev/null ${COPY} ${CLIENT}:/var/named ${DESTROOT} 2> /dev/null ${COPY} ${CLIENT}:/usr/local/etc ${DESTROOT} 2> /dev/null ${COPY} ${CLIENT}:/opt/apache/conf ${DESTROOT} 2> /dev/null # add directory locations you care about here... done echo echo "Finished backup at `date`."
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3EC487D6.5030806>