blog.bartlweb - a technologist's external brain

Backup von Linux-Servern via SSH und rsync

Gerade wer viele Linux-basierte virtuelle Maschinen auf seinem Server laufen hat, wünscht sich eine einfache Methode Dateien und Konfigurationen auf einen entfernten Backupserver zu sichern. Der einfachste Weg neben dem Backup der kompletten virtuellen Maschine ist das Kopieren der Dateien mit Hilfe von rsync über SSH. Diese Anleitung erklärt die Einrichtung eines Cronjobs auf dem Backupserver der jede Nacht Backups von definierten Remote-Hosts erstellt. Das komfortable daran: Der ganze Prozess läuft vom Backupserver aus und das für beliebig viele zu sichernde Hosts.

Automatischer Login per SSH

Um sich automatisch mit dem Remote-Host verbinden zu können, müssen Sie sich bei diesem über ein Zertifikat anmelden. Dazu generieren Sie zunächst für Ihren Backupserver ein Zertifikat inkl. dem öffentlichen Schlüssel. Diesen müssen Sie nun Ihrem Remote-Host bekannt geben. (Achten Sie dabei, die folgenden Schritte für den richtigen Benutzer, also jenen mit dem Sie die Backups erstellen möchten, durchzuführen.)

SSH-Key erstellen (falls nicht schon vorhanden):

ssh-keygen -t rsa -b 4096

Kopieren Sie die Datei "id_rsa.pub" per ssh auf Ihren Remote-Host.

scp /home/<user>/.ssh/id_rsa.pub remoteuser@remotehost:/tmp

Fügen Sie nun den Public-Key ihres Backupserver zu den Known-Hosts des Remote-Hosts hinzu.

cat /tmp/id_rsa.pub >> /home/<user>/.ssh/authorized_keys

Sollte das Verzeichnis .ssh nicht existieren erstellen Sie dieses und weisen die Zugriffsrechte 0700 zu.

Backupscript erstellen

Das folgende Script setzt das Programm "rsync" voraus, dass bei vielen Linux-Distributionen aber standardmäßig mitgeliefert wird.

rsync -avze "ssh -l <remoteuser>" --delete --hard-links --human-readable --quiet  <remoteip>:/<remotepath>/ /<localpath>/

Beispiel:

rsync -avze "ssh -l backup" --delete --hard-links --human-readable --quiet  192.168.0.10:/var/lib/mysql/ /mnt/backup/dbserver/mysql/

Speichern Sie das folgende Script (inkl. Anpassungen) auf Ihrem Backupserver.

Cronjob einrichten

Um das obige Script jede Nacht um 1:00 Uhr laufen zu lassen fügen Sie die folgende Zeile zu ihren Cronjobs am Backupserver per Befehl "crontab -e" hinzu. (Achten Sie dabei auf ausreichende Rechte.)

0 1 * * * /home/user/rsync_backup.sh

Dieser Artikel hat Dir deinen Tag gerettet?

... und mühevolles Probieren, Recherchieren und damit Stunden an Zeit gespart? Oder einfach nur Dein Problem gelöst?

Dann würde ich mich freuen, wenn Du meine Zeit für die Erstellung dieses Blogartikels mit einer kleinen Anerkennung honorierst:

Zahlung mit PayPal oder Kreditkarte.

Hinweis zur Verwendung

Die Übermittlung einer Zahlung ist eine persönliche Anerkennung Ihrerseits an den Entwickler (Christian Bartl, Privatperson). Eine Zahlung ist nicht zweckgebunden und es ist keine Gegenleistung zu erwarten. Bitte beachten Sie, dass für eine übermittelte Zahlung keine Quittung ausgestellt werden kann.

Über den Autor

Christian Bartl

Christian Bartl Requirements Engineer
& Solution Architect für Online und Mobile

Als Technologie-Enthusiast und begeisterter Programmierer entwickle ich in meiner Freizeit Websites, Software und IT-Lösungen, die mir selbst und anderen den Alltag vereinfachen.

mehr auf christian.bartl.me

Kommentare

Noch kein Kommentar vorhanden.
Sei der Erste! - Ich freue mich über deine Anmerkung, Kritik oder Frage.

Kommentar schreiben

Der hier angegebene Name wird gemeinsam mit deinem Kommentar auf der Website veröffentlicht.

Deine E-Mail-Adresse wird zur einmaligen Benachrichtigung bei Veröffentlichung des Kommentars genutzt.

Benachrichtigung per E-Mail über Antworten auf meinen Kommentar erhalten.

Bitte tippe die Zahlenkombination "1228" ein, nur dann kann ich deinen Kommentar entgegennehmen.

Bitte fülle dieses Feld nicht aus, nur dann kann ich deinen Kommentar entgegennehmen.