Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision | ||
linux:backup:server-backup-nfs [2017/11/23 12:41] – angelegt psycore | linux:backup:server-backup-nfs [2024/01/12 22:17] – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | {{tag> | ||
+ | ====== 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 ===== | ||
+ | |||
+ | <code bash> | ||
+ | apt-get install nfs-common | ||
+ | mkdir / | ||
+ | mount -t nfs host:/pfad / | ||
+ | </ | ||
+ | |||
+ | ==== Automount ==== | ||
+ | |||
+ | /etc/fstab: | ||
+ | |||
+ | <code text> | ||
+ | host:/ | ||
+ | </ | ||
+ | |||
+ | ===== Backup Script ===== | ||
+ | |||
+ | <code bash> | ||
+ | #!/bin/sh | ||
+ | # Remote Server Backup Script v1.6 by PsyCore | ||
+ | |||
+ | # vars | ||
+ | |||
+ | BCF=my.backup.tar | ||
+ | BCF2=sql.backup.tgz | ||
+ | NFSDir="/ | ||
+ | |||
+ | SQLUser=privileged_user | ||
+ | SQLPass=passw0rd_privileged_user | ||
+ | |||
+ | SUBJECT=" | ||
+ | EMAIL=" | ||
+ | EMSG="/ | ||
+ | ATTACH="/ | ||
+ | DATE=$(date +%u) | ||
+ | |||
+ | EnableFileBackup=1 | ||
+ | EnableSQLBackup=1 | ||
+ | EnableCronBackup=1 | ||
+ | EnableCloudBackup=1 | ||
+ | |||
+ | run_date=`date +' | ||
+ | echo " | ||
+ | echo " | ||
+ | |||
+ | if [ " | ||
+ | then | ||
+ | echo "SQL Backup started " `date +' | ||
+ | #date +' | ||
+ | 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 / | ||
+ | cp -u sql.backup-$DATE.tgz $NFSDir | ||
+ | fi | ||
+ | |||
+ | # backup cron tasks | ||
+ | |||
+ | if [ " | ||
+ | then | ||
+ | echo "Cron Backup started " `date +' | ||
+ | #date +' | ||
+ | crontab -l > crontab.txt | ||
+ | tar cvfz crontab.tgz *.txt | ||
+ | fi | ||
+ | |||
+ | if [ " | ||
+ | then | ||
+ | echo "File Backup started " `date +' | ||
+ | #date +' | ||
+ | tar cvfz webs.tgz / | ||
+ | fi | ||
+ | |||
+ | if [ " | ||
+ | then | ||
+ | echo "Cloud Backup started " `date +' | ||
+ | #date +' | ||
+ | rsync -a -v --exclude-from ' | ||
+ | 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>> | ||
+ | # grep "221 Goodbye" | ||
+ | echo " | ||
+ | echo " ">> | ||
+ | echo " | ||
+ | echo " | ||
+ | ls -ashl $NFSDir>> | ||
+ | echo " | ||
+ | echo " | ||
+ | ls -ashl / | ||
+ | |||
+ | mail -A $ATTACH -s " | ||
+ | rm $EMSG | ||
+ | #date +' | ||
+ | |||
+ | # EOF | ||
+ | </ | ||
+ | |||
+ | ==== backup-exclude.txt ==== | ||
+ | |||
+ | Diese Datei beinhaltet die Ausnahmen, die nicht von rsync kopiert werden sollen. | ||
+ | |||
+ | <code text> | ||
+ | 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. | ||
+ | |||
+ | <code bash> | ||
+ | # m h dom mon dow | ||
+ | 0 12 * * 1 / | ||
+ | </ |