Linux – Backup Script für Dateien und mySQL

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

Leave a Reply

Your email address will not be published. Required fields are marked *