8.3.3 Varmuuskopiointi Rsync:illä

Rsync on paras vaihtoehto kun varmistetaan suuria tietomääriä Internetin yli päivittäin ja päivän aikana muuttuva tietomäärä on kohtuullisen pieni. Rsync varmistaa vain muuttuneet ja uudet tiedot. Rsync pitää olla asennettuna yhteyden molemmissa päissä. Seuraavassa esimerkissä Rsync ajetaan ssh:n ja zip:in läpi, joten tieto salataan ja pakataan siirron ajaksi. SSH:n takia ennen skriptin ajoa on muodostettava ensin SSH-avaimet kappaleen "SSH-salausavainten luonti ja kopiointi ohjeen mukaan.

#!/bin/bash
#
# backup.sh
# tekee varmuuskopiot rsyncillä netin yli
#
BACKUPDIRS="/etc /usr/local/bin /home /var/www /var/mail"
LOG="/usr/local/bin/log/backup.log"
ERRORS="/usr/local/bin/log/backup_errors.log"
NOTICE="admin@test.com"
SERVER=`uname -n`
echo "System backup on `date` of following directories:" > $LOG
echo >> $LOG
# kirjoitetaan lokiin varmuuskopioitavat hakemistot
for path in $BACKUPDIRS
do
echo $path >> $LOG
done
echo >> $LOG
# varmuuskopiodaan hakemistot
for path in $BACKUPDIRS
do
# --deleten kanssa kohdepalvelimelta poistetaan tiedostot, 
# joita ei ole lähdepalvelimella --deleten kanssa voidaan 
# ajaa esim. kerran vuodessa
#rsync -Ravze ssh --delete /$path backup@test.com:backup \
# >> $LOG
rsync -Ravze ssh /$path backup@test.com:backup >> $LOG
if [ $? -eq 0 ]
then
echo >> $LOG
echo "Backup of $path succeful" >> $LOG
echo >> $LOG
else
echo >> $LOG
echo "ERRORS IN BACKUP OF $path! See more details in \
$ERRORS" 1>&2 >> $LOG
mpack -s "Errors in backup ($SERVER)" $ERRORS $NOTICE
fi
done
echo >> $LOG
echo "System backups complete on `date`" >> $LOG
echo >> $LOG
#mailataan tulokset
mpack -s "$SERVER varmuuskopiointi suoritettu" $LOG $NOTICE

Ylläoleva skripti aseteteaan rootin crontabiin seuraavalla rivillä, jolloin saadaan talteen kaikki virheilmoitukset:

0 1 * * * /usr/local/bin/varmistus.sh \
&>/usr/local/bin/log/backup_errors.log



Lauri Laukkarinen 2006-03-23