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