Rsync – Synchronisation leicht gemacht
HINWEIS
Rsync ist gnadenlos! Vor der Nutzung von Rsync und dessen Parameter, sollte man sich ausgiebig damit auseinader gesetzt haben und eventuell Testläufe mit unsensiblen Daten durchführen. Rsync ist zu mehr imstande als dem folgenden Einsatzbeispiel, es lohnt sich ein Blick in die man page.Rsync Syntax
Per Konsole sieht das Syntax-Schema von Rsync folgendermaßen aus:rsync [OPTIONEN] <Source> <Destination>
<Source> bestimmt das Quellverzeichnis. <Destination> gibt das Zielverzeichnis auf dem entfernten System an. Wird nur einer dieser beiden Parameter gesetzt, gilt das aktuelle Verzeichnis als Quell-Verzeichnis.Beispiel
Folgendes Beispiel verdeutlicht das automatisierte Synchronisieren von einem Webserver (Debian) auf ein entferntes System (Debian) per SSH. Wichtig hierbei ist, dass der Benutzer der den Befehl anstösst und auch der Benutzer der die Aktionen auf dem entfernten System ausführt, genügend Rechte auf die zu übertragenden Ordner bzw. Dateien besitzt.#min hour day month dow user command
#—————————————–
#
30 4 * * * rsync -e ssh -a - -delete - -exclude=ordner1/ - -exclude=datei1 - -exclude=ordner2/ - -exclude=cfg*.php /var/www/ root@domain.de:/var/www >> /var/log/rsync.log
-e ssh
gibt an das die Synchronisation per SSH gesichert erfolgen soll. Die Option-a
fasst die Optionen (-oDrlptg) zusammen:- -o behält Besitzrechte bei (nur root)
- -D behält Gerätedateien bei (nur root)
- -r kopiert Unterverzeichnisse
- -l kopiert symbolische Links
- -p behält Rechte bei
- -t behält Zeiten bei
- -g behält Gruppenrechte bei
Was macht - - delete? Genau das was vermutet wird, es löscht alle Dateien auf dem entfernten System, die durch die Übertragenden Dateien ersetzt werden sollen. Bsp. die Datei test.txt existiert auf beiden Systemen. Auf dem Quell-Server wurde diese Datei geändert. Nun würde beim nächsten Synchronisationsdurchlauf die Datei auf dem Ziel-Server durch die Option - - delete entfernt und dann durch die Übertragung neu geschrieben werden.
Mit dem Parameter - - exclude schliesst man Ordner, Unterordner und Dateien aus der Synchronisation aus. Gerade im Bezug auf das Betreiben eines redudanten Servers möchte man nicht nach jeder Synchronisation die typischen Konfigurations-Dateien überarbeiten und mit den Daten des Ziel-Servers anpassen, dies lässt sich bsp. mit - -exclude=cfg*.php einrichten, sofern die Konfigurationsdateien nach diesem Schema erstellt wurden.
Was genau würde in dem oben genannten Beispiel von wo nach wo synchronisiert? Der vollst. Inhalt von /var/www/ würde in den Zielordner root@domain.de:/var/www synchronisiert. Man beachte, dass das Zielverzeichnis keinen abschliessenden Schrägstrich führt. Ersatzweise kann man auch eine IP (root@xxx.xxx.xxx.xxx) oder auch eine dynamische Adresse für die entfernte Synchronisation angeben.
Voila!
Dem eifrigen Leser ist sicherlich aufgefallen, dass der geschilderte Vorgang so nicht funktionieren kann, denn der Cronjob würde zwar ausgeführt, aber dann zwecks Passwortabfrage (SSH-Login) in die Schranken gewiesen werden. Um den reibungslosen (passwortlosen) Verbidungsaufbau zu gewährleisten muss man einen öffentlichen Schlüssel bekanntmachen. Wie das funktioniert erfahren Sie in dem Beitrag SSH ohne Passwort Authentifizierung.
Hinweis
Diese Anleitung ist ein praktischer Leitfaden ohne Gewähr.Links zum Thema
- http://samba.anu.edu.au/rsync/ Rsync Webseite
- http://samba.anu.edu.au/ftp/rsync/rsync.html Rsync man page
- http://www.linux-user.de/ausgabe/2006/04/090-rsync/ Dateien abgleichen mit Rsync

Freitag, 27. Februar 2009 14:10
[...] Es existieren ein oder mehrere Webserver mit unterschiedlichen Standorten. Mit Rsync (Artikel: Rsync – Synchronisation leicht gemacht), Reoback (Artikel: REOBack Backup) und Master/Slave MySQL Replikation (Artikel: MySQL Replikation [...]
Freitag, 27. Februar 2009 14:33
[...] Passwort Authentifizierung Automatisiere SSH-Kommunikation, bsp. für Datei-Synchronisation (s. Rsync – Synchronisation leicht gemacht) kann ohne weiteres Zutun nicht automatisch ablaufen. Um auch die Authentifizierung zu [...]