:::: MENU ::::

Serverbackup mit Debian und Rsync leicht gemacht (15 Minuten TUT)

Letzte Woche habe ich über Festplattenkopien mit Norton Ghost geschrieben, diese Woche ist die Linux Welt dran 😀
Gerade bei Servern ohne Gespiegeltes Raidsystem sind Backups auf externen Servern/Rechern wichtig, so wie es auch bei mir der Fall ist, daher diese recht einfache 15-Minuten Anleitung zum Erstellen eines Backups unter Linux Debian

Voraussetzungen:

2 Server / Rechner mit
Debian Lenny / Etch oder ein vergleichbares System
Rsync ( für inkrementelle Backups), SSH ( zur Übertragung ), SUDO (Rechte)
Eine einigermaßen "dicke" Leitung wenn von Server zu Rechner bei großen Datenmengen

Und los gehts:
1. Softwarepakete auf dem Backuprechner und dem Webserver installieren

apt-get update
apt-get upgrade 
apt-get install ssh openssh sudo rsync

2.Auf dem Backuprechner einen Benutzer für die Datensicherung einrichten

Useradd -m -p* backupuser
passwd backupuser

3. Mit Visudo den Prozess automatisieren

visudo

und das einfügen:

backupuser ALL=(root)NOPASSWD:/usr/bin/rsync

4. SSH Keys auf dem Webserver erstellen

ssh-keygen -t dsa -b 1024 -f ~/rsync-key

5. Keys auf Backupserver kopieren
Wir haben nun 2 Datein rsync-key, rsync-key.pub in unserem /root Verzeichnis auf dem Webserver, diese müssen nun auf dem Backuprechner in unseren home ordner /home/backupuser

Ich habe dazu einfach die Dateien auf dem Backuprechner erstellt und den Inhalt vom Webserver kopiert

cd /home/backupuser
pico rsync-key
pico rsync-key.pub

und dann kommt noch ein wenig Rechteverteilung die wir einfach übernehmen

mkdir ~/.ssh
chmod 700 ~/.ssh
mv ~/rsync-key.pub ~/.ssh/
cd ~/.ssh/
touch authorized_keys
chmod 600 authorized_keys
cat rsync-key.pub >> authorized_keys 

6. Der letzte Schritt in unserem 15 Minuten Tutorial, das Herzstück, unser Backupscript backup.sh

# Linux Backup mit Rsync und SSH
#!/bin/sh

echo "###"
echo "Backupprozess gestartet"
BACKUPDIR=/var/www/
BACKUPORDNER=/home/backupuser/datensicherung/
WEBSERVERIP=192.168.2.100 #müsst ihr natürlich ersetzen^^

echo "Verbinde mit Remotesystem und starte Backup - Dieser Schritt kann je nach Anbindung einige Minuten bis mehrere Stunden dauern"

rsync -a -z -e "ssh -i /root/rsync-key" --rsync-path='sudo /usr/bin/rsync'  --stats --delete 
# --exclude=/hanswerner/ #Hier könntet ihr nach belieben --exclude einfügen, es gehen auch mehrere
$BACKUPDIR backupuser@$WEBSERVERIP:$BACKUPORDNER

echo "Backupprozess beendet"
echo "###"

7. Anhang:
Evtl ist es nötig das ihr die CHMODS ändert, da sonst die .sh nicht gestartet wird, ich würde einfach stumpf 777 verwenden dann seid ihr auf der sicheren Seite

chmod 777 backup.sh

Ausführen könnt ihr das Backup ganz simpel mit

./backup.sh

Grüße euer Michael


One Comment

  • Peter |

    Hallo Michael,

    ich wollte gerade dein tut probieren, jedoch bekomme ich nicht das gewünschte Ergebnis.

    Nun meine Fragen:

    zu Punkt 1: meinst du hier mit „openssh“ das Paket „openssh-server“?
    zu Punkt 2: Useradd > useradd ?
    zu Punkt 5: müssen die Keys nicht auch irgendwo im „zu sichernen“ System eingetragen werden?
    Was bewirken die pico aufrufe ???

    Das Skript alleine läuft bei mir auch nicht, kannst du mir event ein paar tips geben.
    FM:
    rsync error: syntax or usage error (code 1) at main.c(1509) [receiver=3.0.3]
    ./backup.sh: line 14: /var/www/: Datei oder Verzeichnis nicht gefunden

    Gruß
    Peter

So, what do you think ?