Hier eine kurze Zusammenfassung von unserem Backupkonzept:
1) Daily Backup der Datenbank auf externen Server
2) Weekly Backup der kompletten Umgebung auf externen Server
3) Backup des Backupservers auf Backupservers des Hosters
Das ganze läuft per Cronjob, mysqldump, shellscripts und FTP.
Als kurze Beschreibung hier das SQL Backupscript:
date=`date -I`
/path/to/mysql/bin/mysqldump –all-databases -uroot -pPASSWORD | gzip > /path/to/backup/backup-$date.sql.gz
1. Zeile: das Datum wird generiert
2. Zeile: die Datenbank wird gedumpt und zum gewählten Pfad gespeichert: Beispiel des erstellten Filenames: backup-2009-10-09.sql.gz
Damit das täglich ohne Aufwand läuft, wird ein cronjob erstellt, welches das Script automatisch täglich um 1:59Uhr ausführt:
#backup cronjobs
59 1 * * * root /home/mysql_backup.sh
Das Backup bringt auf dem Server natürlich nicht viel, wenn der Server komplett crashed oder hochgenommen wird. Daher das Backup auf einen anderen Host:
HOST=’hostname”
USER=’backupuser’
PASSWD=’password’
date=`date -I`
FILE=backup-$date.sql.gz
ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
put $FILE
quit
END_SCRIPT
exit 0
Und auch dafür wieder ein Cronjob (um 2:59 – damit genügend Zeit bleibt für den SQL Dump)
59 2 * * * root /home/ftp_sql.sh
Soweit so gut – jetzt noch das Backup der kompletten Webumgebung:
date=`date -I`
tar –exclude=/directory/to/exclude/from/backup -czf /path/to/backup/full_backup_$date.tar.gz /path/to/store/backup
Die Anpassung für die Crons und FTP-Upload Scripts sind selbsterklärend..