Backup script, was: Re: storage data
Chuck Swiger
cswiger at mac.com
Thu May 15 23:40:25 PDT 2003
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 at 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`."
More information about the freebsd-questions
mailing list