Dies ist eine alte Version des Dokuments!
Remote Server Backup NFS
Mithilfe des folgenden Scripts können Backups von einem Remote Server auf einen anderen angelegt werden. Hierzu wird NFS genutzt.
NFS Storage einbinden
apt-get install nfs-common mkdir /mnt/storage mount -t nfs host:/pfad /mnt/storage
Automount
/etc/fstab:
host:/pfad /mnt/storage nfs auto 0 0
Backup Script
#!/bin/sh # Remote Server Backup Script v1.6 by PsyCore # vars BCF=my.backup.tar BCF2=sql.backup.tgz NFSDir="/mnt/storage/backup_dir/" SQLUser=privileged_user SQLPass=passw0rd_privileged_user SUBJECT="my Backup Status" EMAIL="notification@yourdomain.tld" EMSG="/tmp/emsg.txt" ATTACH="/tmp/attach.txt" DATE=$(date +%u) EnableFileBackup=1 EnableSQLBackup=1 EnableCronBackup=1 EnableCloudBackup=1 run_date=`date +'%d.%m.%Y %H:%M:%S'` echo "Backup Status: " >$EMSG echo "rsync log" >$ATTACH if [ "$EnableSQLBackup" = "1" ] then echo "SQL Backup started " `date +'%d.%m.%Y %H:%M:%S'` >$EMSG #date +'%d.%m.%Y %H:%M:%S' mysqldump -u $SQLUser -p$SQLPass --all-databases > root_full.sql mysqldump -u $SQLUser -p$SQLPass --databases sql1 > sql1.sql mysqldump -u $SQLUser -p$SQLPass --databases sqlN > sqlN.sql tar cvfz sql.backup-$DATE.tgz *.sql cp -u sql.backup-$DATE.tgz /root/backup-database cp -u sql.backup-$DATE.tgz $NFSDir fi # backup cron tasks if [ "$EnableCronBackup" = "1" ] then echo "Cron Backup started " `date +'%d.%m.%Y %H:%M:%S'` >>$EMSG #date +'%d.%m.%Y %H:%M:%S' crontab -l > crontab.txt tar cvfz crontab.tgz *.txt fi if [ "$EnableFileBackup" = "1" ] then echo "File Backup started " `date +'%d.%m.%Y %H:%M:%S'` >>$EMSG #date +'%d.%m.%Y %H:%M:%S' tar cvfz webs.tgz /var/www/dir1 /var/www/dirN fi if [ "$EnableCloudBackup" = "1" ] then echo "Cloud Backup started " `date +'%d.%m.%Y %H:%M:%S'` >>$EMSG #date +'%d.%m.%Y %H:%M:%S' rsync -a -v --exclude-from 'backup-exclude.txt' --stats --delete /usr/share/some-data $NFSDir >> $ATTACH fi # archive all tar cvf $BCF *.tgz # NFS Storage cp $BCF $NFSDir # cleanup rm -f *.sql rm -f *.tgz rm -f *.tar #rm -f *.txt # grep "bytes sent" backup.log>>$EMSG # grep "221 Goodbye" backup.log>>$EMSG echo "Backup beendet: " `date +'%d.%m.%Y %H:%M:%S'` >> $EMSG echo " ">>$EMSG echo "remote storage: ">>$EMSG echo "==========================">>$EMSG ls -ashl $NFSDir>>$EMSG echo "database archive: ">>$EMSG echo "==========================">>$EMSG ls -ashl /root/backup-database/>>$EMSG mail -A $ATTACH -s "$SUBJECT" "$EMAIL" < $EMSG rm $EMSG #date +'%d.%m.%Y %H:%M:%S' # EOF
backup-exclude.txt
Diese Datei beinhaltet die Ausnahmen, die nicht von rsync kopiert werden sollen.
xxl_sized_directory this_dir_not
Cronjob
Um das Script zeitgesteuert zu starten muss ein Cronjob angelegt werden. In diesem Beispiel startet das Script jeden Montag um 12:00 Uhr. Die Ausgabe des Scripts wird in ein Logfile umgeleitet.
# m h dom mon dow command 0 12 * * 1 /home/user/backup.sh > /home/user/backup.log