Как вы говорите, для этого существует множество стандартных программ. Для этой цели я сейчас использую собственный скрипт оболочки. В будущем я перенесу его на Perl, чтобы сигнализировать об успехах и сбоях в панели управления. Я уже реализовал аналогичную концепцию для резервных копий MySQL из шести серверов, они обновляют статус в Amazon SimpleDB, и у меня есть панель для проверки статуса.
Вот мой сценарий:
#!/bin/sh
HOSTNAME=MYHOSTNAME # name of this computer
DIRECTORIES="/var/www /etc/ /var/backup/database" # directories to backup
BACKUPDIR=/mnt/backup # where to store the backups
TIMEDIR=/mnt/backup/last-full # where to store time of full backup
TAR=/bin/tar # name and location of tar
PATH=/usr/local/bin:/usr/bin:/bin
DOW=`date +%a` # Day of the week e.g. Mon
DOM=`date +%d` # Date of the Month e.g. 27
DM=`date +%d%b%Y` # Date and Month e.g. 27Sep2010
# On the 6 of the month a permanent full backup is made
# Every Sunday a full backup is made - overwriting last Sundays backup
# The rest of the time an incremental backup is made. Each incremental
# backup overwrites last week incremental backup of the same name.
#
# if NEWER = "", then tar backs up all files in the directories
# otherwise it backs up files newer than the NEWER date. NEWER
# gets its date from the file written every Sunday.
# Monthly full backup
if [ $DOM = "06" ]; then
NEWER=""
$TAR $NEWER -cf $BACKUPDIR/$HOSTNAME-$DM.tar $DIRECTORIES
fi
# Weekly full backup
if [ $DOW = "Sun" ]; then
NEWER=""
NOW=`date +%d-%b`
# Update full backup date
echo $NOW > $TIMEDIR/$HOSTNAME-full-date
$TAR $NEWER -cf $BACKUPDIR/$HOSTNAME-$DOW.tar $DIRECTORIES
# Make incremental backup - overwrite last weeks
else
# Get date of last full backup
NEWER="--newer `cat $TIMEDIR/$HOSTNAME-full-date`"
$TAR $NEWER -cf $BACKUPDIR/$HOSTNAME-$DOW.tar $DIRECTORIES
fi