On Jan 29, 2007, at Monday, Jan29, 2007 12:45 PM, Kenny Dail wrote:
I have been poking around the 'Net a bit looking for an easy to use
backup solution for our Mac's (1 mini, 1 powerbook, more in the
future).
Basically there is a server, offsite (FBSD 6.2) with 2 RAID 5 arrays.
I would like to be able to set the 2 (for now) clients to
automatically, incrementally backup certain directories, nightly.
Something encrypted would be nice aswell.
Here is a script I run out of crontab on my Mac. Things to note:
- Uses tar to create the backup.
- Uses rcp to get the backup to the FreeBSD box. Could
use scp if security is an issue.
- It is a cshell script.
- No software to find and install, everything you need
is already on your Mac and freeBSD boxes.
- I do a primary backup every night; no secondaries.
- The script has been in production for about a year
now and works flawlessly.
- Restores are easy, just reverse the process.
- I get an email daily giving me the status of the backup.
- The tar file is written to /tmp before it is copied
to the backup server so disk space could be an issue.
- The tar file could be gziped (tar czf ) to save space
at the expense of cpu time.
- The log directory contains the status of the last two
backups.
- The backup server maintains 31 days of primaries.
########################################################################
######
#!/bin/csh
set LHOST=`hostname`
set BASE=/backup_4/$LHOST
set INFOPATH="/Users/root/dump_info"
set RHOST=some.remote.host
set RUSER=rmotuser
set TARCMD="tar cf"
set BKUP_DIR=/Users
set SUCCESS_SUBJECT="$LHOST primary succeeded"
set FAIL_SUBJECT="$LHOST primary failed"
set MAIL_TO="[EMAIL PROTECTED]"
set SEQFILE=$INFOPATH/Sequence
echo "*** `date` $LHOST Begin setup for this primary backup"
echo "*** `date` Set sequence number of this dump"
if(-s $SEQFILE) then
set LAST=`cat $SEQFILE`
else
echo "WARNING: $SEQFILE non-existant or 0 size"
echo " Set last sequence to 0"
set LAST="0"
endif
echo "*** `date` Last sequence number used: $LAST"
switch($LAST)
case "0":
set SEQ="1"
breaksw
case "1":
set SEQ="0"
breaksw
default:
echo "WARNING: Dump sequence is invalid: $LAST"
echo " Set dump sequence to 0"
set SEQ="0"
breaksw
endsw
echo "*** `date` Sequence number of this dump is: $SEQ"
echo "*** `date` Set path variables"
set INFO=$INFOPATH/primary.$SEQ
set FILE=Users_$SEQ.tar
set [EMAIL PROTECTED]:$BASE/$FILE
set TMPFILE=/var/tmp/$FILE
echo "Path to backup: $BKUP_DIR"
echo "Log file......: $INFO"
echo "Temporary file: $TMPFILE"
echo "Remote file...: $RFILE"
echo "*** `date` $LHOST Setup for this primary backup complete"
echo "*** `date` $LHOST primary backup begun" >& $INFO
echo "*** `date` Sequence number of this dump is: $SEQ" >>& $INFO
echo "*** `date` get space used in $BKUP_DIR" >>& $INFO
du -hs $BKUP_DIR/* >>& $INFO
echo "*** `date` tar $BKUP_DIR to $TMPFILE" >>& $INFO
$TARCMD $TMPFILE $BKUP_DIR >>& $INFO
set rslt=$status
if($rslt != 0) then
echo "FATAL: tar failed, status=$rslt" >>& $INFO
set subject="$FAIL_SUBJECT"
goto pgm_exit
endif
echo "*** `date` Check size of $TMPFILE" >>& $INFO
ls -l $TMPFILE >>& $INFO
echo "*** `date` rcp $TMPFILE to $RFILE" >>& $INFO
rcp $TMPFILE $RFILE >>& $INFO
set rslt=$status
if($rslt != 0) then
echo "FATAL: rcp failed, status=$rslt" >>& $INFO
set subject="$FAIL_SUBJECT"
goto pgm_exit
endif
echo "*** `date` rm $TMPFILE" >>& $INFO
rm $TMPFILE >>& $INFO
set rslt=$status
if($rslt != 0) then
echo "FATAL: rm failed, status=$rslt" >>& $INFO
set subject="$FAIL_SUBJECT"
goto pgm_exit
endif
set subject="$SUCCESS_SUBJECT"
echo "*** `date` Record sequence number of this dump" >>& $INFO
echo "$SEQ" > $SEQFILE
pgm_exit:
echo "*** `date` Exit status=$subject" >>& $INFO
echo "*** `date` $LHOST primary backup ended" >>& $INFO
mail -s "$subject" $MAIL_TO < $INFO
exit 0
########################################################################
###
_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[EMAIL PROTECTED]"