Es gibt nichts wichtigeres als ein Backup.
Um meine Server vor Datenverlust zu sichern arbeite ich mit dem folgenden BackupScript. Es erstellt einmal in der Woche ein vollständiges Backup und jeden anderen Tag ein inkrementelles Backup. Damit ich das Script nicht täglich per Hand starten muss, habe ich hierfür ein CronJob eingerichtet. Einen Artikel zu zum erstellen von CronJobs werde ich am 25.06.2010 veröffentlichen. Zur Sicherung der Daten habe wird zunächst ein weiterer Datenträger gemountet, welcher nach dem Beenden der Backup Prozesses wieder ausgehangen wird.
Zusätzlich zu den Datei-Backups bietet das Script auch die Möglichkeit die mySQL-DB zu sichern. Von dieser Funktion mache ich auf meinen Servern jedoch keinen Gebrauch, da es hierfür ein anderes sehr gutes Tool gibt, welches ich am 24.06.2010 vorstelle.
Script:
#!/bin/bash # # erstellt Backup der wichtigsten Dateien # DATA="/home /root /usr/local/httpd" CONFIG="/etc /var/lib /var/named" LIST="/tmp/backlist_$$.txt" # mount /mnt/backup set $(date) # if test "$1" = "Sun" ; then # Wöchentliches volles Backup aller Daten und Einstellungen. # tar cfz "/mnt/backup/data/data_full_$6-$2-$3.tgz" $DATA rm -f /mnt/backup/data/data_diff* # tar cfz "/mnt/backup/config/config_full_$6-$2-$3.tgz" $CONFIG rm -f /mnt/backup/config/config_diff* else # Tägliches inkrementelles backup: # find $DATA -depth -type f \( -ctime -1 -o -mtime -1 \) -print > $LIST tar cfzT "/mnt/backup/data/data_diff_$6-$2-$3.tgz" "$LIST" rm -f "$LIST" # find $CONFIG -depth -type f \( -ctime -1 -o -mtime -1 \) -print > $LIST tar cfzT "/mnt/backup/config/config_diff_$6-$2-$3.tgz" "$LIST" rm -f "$LIST" fi # # mySQL-DB Backup: mysqldump -u root --password=mypass --opt mydb > "/mnt/backup/database/mydb_$6-$2-$3.sql" gzip "/mnt/backup/database/mydb_$6-$2-$3.sql" # umount /mnt/backup
CronJob:
0 3 * * * /root/scripts/daily_backup