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.

Comments: Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?