Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
linux:backup:server-backup-nfs [2024/01/12 22:17] – Externe Bearbeitung 127.0.0.1 | linux:backup:server-backup-nfs [2024/01/13 23:18] (aktuell) – gelöscht psycore | ||
---|---|---|---|
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 / | ||
- | </ |