Thursday, August 24, 2006
Howto: Linux Backup
Quellen: http://www.hostlibrary.com/Remotebackupusingsshtarandcron-how-to.html
Das Backup auf dem Server gliedert sich in 3 Teile:
1. Backup des MySQL-Servers
2. Backup der Daten inkl. des Backups des MySQL-Servers
3. automatisieren des Backups mit cron
1.) Backup des MySQL-Servers
Hierzu eignet sich besonders das Tool mysqldump. Folgendes kleines
Skript (mysqlbackup.sh):
#!/bin/bash
# this is run by the root crontab
datetime='date '+%A''
mysqldump -uroot -ppasswort --all-databases| gzip > /opt/backup/mysql/backup-$datetime.gz
find /opt/backup/mysql/backup-$datetime.gz
Hinweis: passwort muss durch das Passwort des Root-Benutzers der Datenbank ersetzt werden.
2.) Backup der Daten
die Daten sollen natürlich nicht auf dem gleichen, sondern auf einem entfernten Rechner gesichert werden, hierzu eignet sich z.B. ssh
a.) Schlüssel generieren
Die Authentifikation soll ohne Angabe des Passwortes erfolgen, aus diesem Grunde
SSH-Schlüssel generieren:
ssh-keygen -t rsa
Die Angabe des Pfades kann übersprungen werden
es ergibt sich folgende Ausgabe:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/joe/.ssh/id_rsa):
auch die Passphrase leer lassen. Folgende Ausgabe:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/joe/.ssh/id_rsa.
Your public key has been saved in /home/joe/.ssh/id_rsa.pub.
The key fingerprint is:
a6:84:5d:a6:cd:ff:31:48:21:85:ca:46:93:88:7a:50 joe@localmachine
Es wurden 2 Dateien im Homeverzeichnis des Benutzers erstellt:
~/.ssh/id_rsa (private key)
~/.ssh/id_rsa.pub (public key)
b.) Schlüssel auf den entfernten Rechner übertragen
ssh remotemachine
cd homedir
mkdir .ssh
chmod 600 .ssh
Hinweis: remotemacheine durch die IP-Adresse des entferneten Rechners ersetzen und homedir durch entsprechendes Verzeichnis ersetzen.
Der Publickey auf den entfernten Rechner kopieren:
scp ~/.ssh/id_rsa.pub remotemachine:.ssh/authorized_keys2
joe@localmachine:~$ scp ~/.ssh/id_rsa.pub remotemachine:.ssh/authorized_keys2
joe@remotemachine's password:
id_rsa.pub 100% 225 0.0KB/s 00:00
joe@localmachine:~$
c.) Backup-Skript erstellen (z.B. backup.sh)
#!/bin/bash
#zuerst das mysqlbackup-Skript aufrufen
/home/joe/mysql_backup.sh
datetime='date '+%A''
# erstelle ein tar-Archiv
tar czvf /opt/backup/backup.$(date +%A).tar.gz /etc /var/www /opt/backup/mysql/backup-$datetime.gz
# schiebe den Tarball auf den entfernten Rechner
cat /opt/backup/backup.$(date +%A).tar.gz |ssh remotemachine "cd backup; cat > backup.tar.gz"
Hinweis: die Verzeichnisse müssen natürlich angepasst werden
3.) Cron
die Crontabelle editieren:
crontab -e
um die Backups immer nachts um 2 Uhr auszuführen folgenden Eintrag hinzufügen:
0 2 * * * /home/joe/backup.sh
alternativ ein Symlink in das Verzeichnis /etc/cron.daily sezten
Hinweis: der Pfad muss natürlich angepasst werden.