Rsync

Aus DebianforumWiki
Wechseln zu: Navigation, Suche
WikiGrundsatzfragen ‹ Rsync


Getestet.png Getestet: Dieser Hinweis soll dir dabei helfen, zu entscheiden, ob dieser Artikel auf deinem System funktionieren wird oder nicht. Solltest du feststellen, dass dieser Artikel bei einer ungetestet Version funktioniert, kannst du das gerne hier korrigieren oder im Forum anmerken.


rsync.

Diese Seite soll einen Überblick über rsync, dessen Anwendung und Funktionen bereitstellen.

Was ist rsync

Mit Debianpackage.png rsync kann man auf einfache Weise Dateien und Verzeichnisse, lokal oder per SSH über ein Netzwerk, synchronisieren. Rsync wird häufig für Backups benutzt, kann aber auch als Alternative zu cp genutzt werden. Als Alternative zu Debianpackage.png cp hat es den Vorteil, dass unveränderte Dateien nicht erneut übertragen werden müssen und teilweise Übertragungen fortgesetzt werden können.

Installation

Da rsync in den Debian-Quellen vorhanden ist gestaltet sich die Installation einfach. Man muss lediglich das Paket rsync mit dem bevorzugten Paketmanager installieren, z.B. mit Debianpackage.png apt-get:

root@debian:~# apt-get install rsync

Benutzung

Die grundlegende Syntax ist sehr einfach:

user@debian:~$ rsync [OPTIONEN] Quelle Ziel

Als Quelle wählt man natürlich den zu sichernden (bzw. zu übertragenden) Ordner, wie z.B. /home/user und als Ziel das Zielmedium z.B. /media/user/USB-Platte/Backup. Bei der Angabe der Quelle ist es wichtig darauf zu achten, dass zwischen Quelle und Quelle/ unterschieden wird.

user@debian:~$ rsync -a /home/user/ /media/user/USB-Platte/Backup

Obiger Befehl würde nur die Dateien im Ordner user zum Ziel übertragen, nicht den Ordner user selbst. Um den gesamten Ordner zu sichern muss man rsync folgendermaßen aufrufen:

user@debian:~$ rsync -a /home/user /media/user/USB-Platte/Backup

Parameter

Wie man der manpage entnehmen kann gibt es sehr viele Optionen für rsync. Im vorigen Beispiel wurde die Option -a benutzt, welche die folgenden Optionen beinhaltet:

Option Beschreibung
- r Unterverzeichnisse werden mitkopiert (rekursiv)
- l symbolische Links werden mitkopiert
- p Rechte bleiben erhalten
- t Zeiten bleiben erhalten
- g Gruppenrechtebleiben erhalten
- o Besitzrechte bleiben erhalten (root)
- D Gerätedateien bleiben erhalten (root)


Um Besitzrechte und Gerätedateien zu erhalten muss rsync als root ausgeführt werden. Will man nicht nur symbolische Links sondern auch Hardlinks erhalten, so kann man dies durch die Option -H erreichen. Um nach einem Abbruch an der Abbruchstelle fortsetzen zu können, kann man die Option -P verwenden. Durch diese Option wird auch der Fortschritt des Vorgangs angezeigt.

Bei einer Übertragung über ein Netzwerk kann man durch -z die Daten komprimiert übertragen und durch -e wählt man die Remote-Shell, z.B. -e ssh.

Bei Aktualisierungen eines Backups kann die Option --delete sinnvoll sein, da sie Dateien die nicht mehr in der Quelle vorhanden sind auch im Ziel löscht. So verhindert man auch, dass Dateien, welche seit dem letzten Backup umbenannt wurden, doppelt im Backup vorkommen. Mit Hilfe der Option -b können veränderte Dateien, auch durch --delete gelöschte Dateien, in einen durch --backup-dir= definierten Backup-Ordner gesichert werden.

Mittels --exclude= kann man Ordner von der Übertragung ausschließen. Dabei ist zu beachten, dass man den Ordner relativ zur Quelle und nicht absolut angeben muss. D.h. wenn unsere Quelle /home/user ist und wir wollen /home/user/.gnupg vom Backup ausschließen, müssen wir dies mit --exclude=/.gnupg tun, nicht mit --exclude=/home/user/.gnupg.

Verwendet man --stats bekommt man am Ende der Übertragung einen Report und mit -v während des Vorgangs die aktuellen Schritte angezeigt.

Dies sind nur einige, häufig genutzte, der vielzähligen Parameter. Bei Bedarf kann man weitere in der Dokumentation finden.

Beispiele

Eine typische lokale Datensicherung könnte so aussehen:

user@debian:~$ rsync -avP /home/user /media/user/USB-Platte

Eine Sicherung, bei der gelöschte Dateien auch im bereits vorhandenen Backup entfernt, aber gesichert, und die Daten komprimiert über SSH übertragen werden könnte so aussehen:

user@debian:~$ rsync -avPzbe "ssh -p 667" --delete --backup-dir=user2@zweitrechner:/home/user2/Old /home/user user2@zweitrechner:/home/user2/Backup

Troubleshooting

Will man Daten per rsync über ein Netzwerk übertragen und erhält eine Fehlermeldung, liegt es in den meisten Fällen daran, dass auf der Gegenseite kein rsync installiert ist.

Quellen

  1. http://blog.mdosch.de/2013/06/13/backup-mit-rsync/ (CC BY-SA)

Weiterführende Links

  1. http://rsync.samba.org/ rsync-Homepage
  2. http://www.samba.org/ftp/rsync/rsync.html Manpage
  3. https://ctaas.de/rsync.htm - übersichtliches & leicht anpassbares Skript zur Sicherung mit rsync nach dem Großvater-Vater-Sohn Generationenprinzip.
  4. http://www.linux-community.de/Internal/Artikel/Print-Artikel/LinuxUser/2006/04/Dateien-abgleichen-mit-Rsync LinuxUser-Artikel