Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

tux:rsync [2011/04/14 14:38]
127.0.0.1 external edit
tux:rsync [2013/05/30 12:00] (aktuell)
wikisysop [rsync unter Mac OSX]
Zeile 2: Zeile 2:
 ===== rsync: Anwendung und Beispiele ===== ===== rsync: Anwendung und Beispiele =====
  
-<fc #​008000>​rsync</​fc>​((http://​www.samba.org/​ftp/​rsync/​rsync.html)) ist sowohl ein Netzwerkprotokoll als auch ein unter der GPL stehendes Programm zur Synchronisation von Daten, meistens über ein Netzwerk. Die Synchronisation läuft bei rsync nur unidirektional,​ also von einem Quellverzeichnis zu einem Zielverzeichnis,​ ab. Wenn beide Verzeichnisse geändert wurden, werden die Änderungen nicht zusammengeführt (merge), sondern die Änderungen im Zielverzeichnis gehen verloren. Bei der Datenübertragung werden Teile einer Quelldatei (die zu übertragende Datei), die sich bereits in der Zieldatei befinden, nicht übertragen,​ wodurch viel Transfervolumen gespart werden kann (Delta-Kodierung)((http://​de.wikipedia.org/​wiki/​Rsync))((http://​www.mpipks-dresden.mpg.de/​~mueller/​docs/​suse10.0/​suselinux-manual_de/​manual/​sec.net.sync.rsync.html)).+<fc #​008000>​rsync</​fc>​((http://​www.samba.org/​ftp/​rsync/​rsync.html)) ist sowohl ein Netzwerkprotokoll ​(TCP Port 873) als auch ein unter der GPL stehendes Programm zur Synchronisation von Daten, meistens über ein Netzwerk. Die Synchronisation läuft bei rsync nur unidirektional,​ also von einem Quellverzeichnis zu einem Zielverzeichnis,​ ab. Wenn beide Verzeichnisse geändert wurden, werden die Änderungen nicht zusammengeführt (merge), sondern die Änderungen im Zielverzeichnis gehen verloren. Bei der Datenübertragung werden Teile einer Quelldatei (die zu übertragende Datei), die sich bereits in der Zieldatei befinden, nicht übertragen,​ wodurch viel Transfervolumen gespart werden kann (Delta-Kodierung)((http://​de.wikipedia.org/​wiki/​Rsync))((http://​www.mpipks-dresden.mpg.de/​~mueller/​docs/​suse10.0/​suselinux-manual_de/​manual/​sec.net.sync.rsync.html)).
  
 rsync kann zB immer dann verwendet werden, wenn ein Fileserver auf neue Hardware umzieht. Im Gegensatz zu normalen Kopiervorgängen,​ wo uU bei einem Fehler der komplette Kopiervorgang abgebrochen wird, kann rsync diese Fehler ignorieren bzw. übergehen und ggf die Fehler in ein Log-File schreiben. Gerade bei Fileservern kann es uU auch wichtig sein, den original Zeitstempel der Dateien und Verzeichnisse zu erhalten; normale Kopiervorgänge zB ändern das Änderungsdatum auf das aktuelle zum Zeitpunkt des Kopierens. rsync wird durch seine Eigenschaft,​ nicht den gesamten Verzeichnisbaum zu kopieren, sondern nur geänderte Daten und davon auch nur Teile, auch in verschiedenen Backup-Szenarien Anwendung finden. ​ rsync kann zB immer dann verwendet werden, wenn ein Fileserver auf neue Hardware umzieht. Im Gegensatz zu normalen Kopiervorgängen,​ wo uU bei einem Fehler der komplette Kopiervorgang abgebrochen wird, kann rsync diese Fehler ignorieren bzw. übergehen und ggf die Fehler in ein Log-File schreiben. Gerade bei Fileservern kann es uU auch wichtig sein, den original Zeitstempel der Dateien und Verzeichnisse zu erhalten; normale Kopiervorgänge zB ändern das Änderungsdatum auf das aktuelle zum Zeitpunkt des Kopierens. rsync wird durch seine Eigenschaft,​ nicht den gesamten Verzeichnisbaum zu kopieren, sondern nur geänderte Daten und davon auch nur Teile, auch in verschiedenen Backup-Szenarien Anwendung finden. ​
Zeile 57: Zeile 57:
 ==== Beispiele ==== ==== Beispiele ====
  
-Lokal das Verzeichnis >>​~/​Desktop/​Bilder<<​ nach >>/​tmp/​archiv<<​ kopieren:+Lokal das Verzeichnis >><fc #008000>​~/​Desktop/​Bilder</fc><< nach >><fc #008000>/​tmp/​archiv</fc><< kopieren:
  
-<xterm2>$ <fc #​008000>​rsync ~/​Desktop/​Bilder/​ /​tmp/​archiv/</​fc>​ +<xterm>$ <fc #​008000>​rsync ~/​Desktop/​Bilder/​ /​tmp/​archiv/</​fc>​ 
-</xterm2>+</xterm>
  
 Dadurch werden **nur** Dateien aus dem Bilder Ordner synchronisiert,​ evtl. vorhandene Unterverzeichnisse werden **nicht** berücksichtigt. Ebenfalls wird den Dateien im Zielverzeichnis das zum Zeitpunkt der Synchronisation aktuelle Datum als Änderungsdatum vergeben. Um nun evtl. vorhandene Unterverzeichnisse mit zu synchronisieren und den Dateien ihren eigentlichen Zeitstempel bzgl. des Änderungsdatums zu erhalten, verwenden Sie die Optionen <fc #​008000>​-r</​fc>​ (rekursiv) und <fc #​008000>​-t</​fc>​ (time): Dadurch werden **nur** Dateien aus dem Bilder Ordner synchronisiert,​ evtl. vorhandene Unterverzeichnisse werden **nicht** berücksichtigt. Ebenfalls wird den Dateien im Zielverzeichnis das zum Zeitpunkt der Synchronisation aktuelle Datum als Änderungsdatum vergeben. Um nun evtl. vorhandene Unterverzeichnisse mit zu synchronisieren und den Dateien ihren eigentlichen Zeitstempel bzgl. des Änderungsdatums zu erhalten, verwenden Sie die Optionen <fc #​008000>​-r</​fc>​ (rekursiv) und <fc #​008000>​-t</​fc>​ (time):
  
-<xterm2>$ <fc #​008000>​rsync -rt ~/​Desktop/​Bilder/​ /​tmp/​archiv/</​fc>​ +<xterm>$ <fc #​008000>​rsync -rt ~/​Desktop/​Bilder/​ /​tmp/​archiv/</​fc>​ 
-</xterm2>+</xterm>
  
 Jetzt werden auch die Unterverzeichnisse von >><​fc #​008000>​~/​Desktop/​Bilder</​fc><<​ übertragen und der originale Zeitstempel wird beibehalten. Wenn jetzt im Quellverzeichnis Dateien liegen, die unterschiedlichen Benutzern gehören, würde bei og Kommando im Zielverzeichnis jede Datei dem User gehören, der den rsync Befehl ausführt. Um die <fc #​008000>​Owner</​fc>​ Informationen zu erhalten, verwenden Sie den Schalter <fc #​008000>​-o</​fc>​ für den Eigentümer und <fc #​008000>​-g</​fc>​ für die <fc #​008000>​Gruppe</​fc>​ **Note:** Diese Option darf nur root verwenden, daher müssen Sie bei dieser Option das rsync-Kommando mit sudo ausführen: Jetzt werden auch die Unterverzeichnisse von >><​fc #​008000>​~/​Desktop/​Bilder</​fc><<​ übertragen und der originale Zeitstempel wird beibehalten. Wenn jetzt im Quellverzeichnis Dateien liegen, die unterschiedlichen Benutzern gehören, würde bei og Kommando im Zielverzeichnis jede Datei dem User gehören, der den rsync Befehl ausführt. Um die <fc #​008000>​Owner</​fc>​ Informationen zu erhalten, verwenden Sie den Schalter <fc #​008000>​-o</​fc>​ für den Eigentümer und <fc #​008000>​-g</​fc>​ für die <fc #​008000>​Gruppe</​fc>​ **Note:** Diese Option darf nur root verwenden, daher müssen Sie bei dieser Option das rsync-Kommando mit sudo ausführen:
  
-<xterm2>$ <fc #​008000>​sudo rsync -rtog ~/​Desktop/​Bilder/​ /​tmp/​archiv/</​fc>​ +<xterm>$ <fc #​008000>​sudo rsync -rtog ~/​Desktop/​Bilder/​ /​tmp/​archiv/</​fc>​ 
-</xterm2>+</xterm>
  
 Jetzt haben wir bereits den Inhalt des Quellverzeichnissen mit samt seinen Unterverzeichnissen (<fc #​008000>​-r</​fc>​) übertragen,​ wir haben den <fc #​008000>​Zeitstempel</​fc>​ (<fc #​008000>​-t</​fc>​),​ <fc #​008000>​Besitzer</​fc>​ (<fc #​008000>​-o</​fc>​) und <fc #​008000>​Gruppe</​fc>​ (<fc #​008000>​-g</​fc>​) erhalten, jetzt bräuchten wir noch die Zugriffsrechte an sich. Um die <fc #​008000>​ACLs</​fc>​ zu erhalten, verwendet man den Schalter <fc #​008000>​-p</​fc>​ andernfalls würden die Verzeichnisse und Dateien die Standardberechtigungen,​ welche in der umask vorgegeben sind, erhalten: Jetzt haben wir bereits den Inhalt des Quellverzeichnissen mit samt seinen Unterverzeichnissen (<fc #​008000>​-r</​fc>​) übertragen,​ wir haben den <fc #​008000>​Zeitstempel</​fc>​ (<fc #​008000>​-t</​fc>​),​ <fc #​008000>​Besitzer</​fc>​ (<fc #​008000>​-o</​fc>​) und <fc #​008000>​Gruppe</​fc>​ (<fc #​008000>​-g</​fc>​) erhalten, jetzt bräuchten wir noch die Zugriffsrechte an sich. Um die <fc #​008000>​ACLs</​fc>​ zu erhalten, verwendet man den Schalter <fc #​008000>​-p</​fc>​ andernfalls würden die Verzeichnisse und Dateien die Standardberechtigungen,​ welche in der umask vorgegeben sind, erhalten:
  
-<xterm2>$ <fc #​008000>​sudo rsync -rtogp ~/​Desktop/​Bilder/​ /​tmp/​archiv/</​fc>​ +<xterm>$ <fc #​008000>​sudo rsync -rtogp ~/​Desktop/​Bilder/​ /​tmp/​archiv/</​fc>​ 
-</xterm2>+</xterm>
  
 Mittlerweile haben wir schon ein recht brauchbares Ergebnis. ​ Mittlerweile haben wir schon ein recht brauchbares Ergebnis. ​
Zeile 83: Zeile 83:
 **Remote Login:** Jetzt können wir mal damit beginnen, ein Verzeichnis auf einen anderen Rechner zu synchronisieren. Dafür müssen die Zugangsdaten eines berechtigten Benutzers auf der Zielmaschine bekannt sein und auch den kompletten (absolute) Pfad zum Zielverzeichnis muss man angeben. Um nun das og Testverzeichnis ~/​Desktop/​Bilder mit dem letzten Parametersatz (-rtogp) auf einen anderen Rechner (192.168.111.159) mit dem Benutzer dtp als Logininformation in das Verzeichnis /tmp/archiv zu kopieren verwenden Sie folgendes Kommando: **Remote Login:** Jetzt können wir mal damit beginnen, ein Verzeichnis auf einen anderen Rechner zu synchronisieren. Dafür müssen die Zugangsdaten eines berechtigten Benutzers auf der Zielmaschine bekannt sein und auch den kompletten (absolute) Pfad zum Zielverzeichnis muss man angeben. Um nun das og Testverzeichnis ~/​Desktop/​Bilder mit dem letzten Parametersatz (-rtogp) auf einen anderen Rechner (192.168.111.159) mit dem Benutzer dtp als Logininformation in das Verzeichnis /tmp/archiv zu kopieren verwenden Sie folgendes Kommando:
  
-<xterm2>$ <fc #​008000>​sudo rsync -rtogp ~/​Desktop/​Bilder/​ dtp@192.168.111.159:/​tmp/​archiv/</​fc>​ +<xterm>$ <fc #​008000>​sudo rsync -rtogp ~/​Desktop/​Bilder/​ dtp@192.168.111.159:/​tmp/​archiv/</​fc>​ 
-</xterm2>+</xterm>
  
 In diesem Fall werden Sie zweimal aufgefordert ein Passwort einzugeben. Das erste mal für das sudo Kommando -> Das ist das Passwort eines administrativen Benutzers (root) auf der lokalen Maschine) und das zweite Mal für die Login Daten des Remote Servers. In diesem Fall werden Sie zweimal aufgefordert ein Passwort einzugeben. Das erste mal für das sudo Kommando -> Das ist das Passwort eines administrativen Benutzers (root) auf der lokalen Maschine) und das zweite Mal für die Login Daten des Remote Servers.
  
-Um nur die Verzeichnisstruktur,​ jedoch keine Dateien zu kopieren, können entsprechende Filter gesetzt werden. Der Filter >><​fc #​008000>​-f"​+ */</​fc>"<<​ includiert (+) alle Verzeichnisse (*/) und der Filter >><​fc #​008000>​-f"​- *"</​fc><<​ schließt alle Dateien aus:+** Einsatz von Filtern:​** ​Um nur die Verzeichnisstruktur,​ jedoch keine Dateien zu kopieren, können entsprechende Filter gesetzt werden. Der Filter >><​fc #​008000>​-f"​+ */</​fc>"<<​ includiert (+) alle Verzeichnisse (*/) und der Filter >><​fc #​008000>​-f"​- *"</​fc><<​ schließt alle Dateien aus:
  
-<xterm2>$ <fc #​008000>​rsync -a -f"+ */" -f"- *" /Quelle /​Ziel</​fc></​xterm2>+<xterm>$ <fc #​008000>​rsync -a -f"+ */" -f"- *" /Quelle /​Ziel</​fc></​xterm>
  
 Um nur die Verzeichnisstruktur und PDF Dateien zu kopieren und alle anderen Dateien wegzulassen,​ erweiteren Sie die vorrangegangenen Filter um den Filter >><​fc #​008000>​-f"​+ *.pdf"</​fc><<:​ Um nur die Verzeichnisstruktur und PDF Dateien zu kopieren und alle anderen Dateien wegzulassen,​ erweiteren Sie die vorrangegangenen Filter um den Filter >><​fc #​008000>​-f"​+ *.pdf"</​fc><<:​
  
-<xterm2>$ <fc #​008000>​rsync -a -f"+ */" -f"+ *.pdf" -f"- *" /Quelle /​Ziel</​fc></​xterm2>+<xterm>$ <fc #​008000>​rsync -a -f"+ */" -f"+ *.pdf" -f"- *" /Quelle /​Ziel</​fc></​xterm>
  
 <note tip>​**Note:​** Wenn auf der Quellmaschine Dateien dem User root gehören, werden diese Ownerships auf der Zielmaschine nicht berücksichtigt. Man müsste sich entweder gleich mit dem User root verbinden oder aber wenn dieser wie zB auf Mac OS nicht aktiviert ist über einen SSH Key für root verbinden. Dann kann man auch den User root für die SSH Session verwenden, obwohl dieser auf der Zielmaschine nicht aktiviert ist!</​note>​ <note tip>​**Note:​** Wenn auf der Quellmaschine Dateien dem User root gehören, werden diese Ownerships auf der Zielmaschine nicht berücksichtigt. Man müsste sich entweder gleich mit dem User root verbinden oder aber wenn dieser wie zB auf Mac OS nicht aktiviert ist über einen SSH Key für root verbinden. Dann kann man auch den User root für die SSH Session verwenden, obwohl dieser auf der Zielmaschine nicht aktiviert ist!</​note>​
Zeile 102: Zeile 102:
 Die rsync Implementierung unter Mac OSX hält noch eine Besonderheit bereit, es kann mit den >>​Extended Attributes<<​ von Apple umgehen. Wir wollten damit über den Umweg einer Mac OSX Workstation einen Third Party AFP Server (Helios) auf einen anderen (ExtremeZ-IP) migrieren. Dabei wurden auf der Workstation beide Server gemountet und im Terminal ein rsync mit dem Parametersatz >><​fc #​008000>​rsync -vvrltuX --ignore-errors --delete --force --exclude='​Network Trash Folder'​ //$SRC// //​$DST//</​fc><<​ angeworfen. Dabei sorgt dann im Prinzip das AFP Protokoll für die Weitergabe der EAs und jeder AFP Server für sich dann für das korrekte Abspeichern der EAs in seinem Filesystem. ​ Die rsync Implementierung unter Mac OSX hält noch eine Besonderheit bereit, es kann mit den >>​Extended Attributes<<​ von Apple umgehen. Wir wollten damit über den Umweg einer Mac OSX Workstation einen Third Party AFP Server (Helios) auf einen anderen (ExtremeZ-IP) migrieren. Dabei wurden auf der Workstation beide Server gemountet und im Terminal ein rsync mit dem Parametersatz >><​fc #​008000>​rsync -vvrltuX --ignore-errors --delete --force --exclude='​Network Trash Folder'​ //$SRC// //​$DST//</​fc><<​ angeworfen. Dabei sorgt dann im Prinzip das AFP Protokoll für die Weitergabe der EAs und jeder AFP Server für sich dann für das korrekte Abspeichern der EAs in seinem Filesystem. ​
  
-In diesem speziellen Setup war jedoch eine gepatchte rsync Version von Nöten. Bei der Default rsync Version 3.0.7 werden die erweiterten Attribute auf dem Quellserver nicht korrekt ausgelesen, was beim Transport einen Fehler erzeugt. Mike Bombich hat eine [[http://​www.bombich.com/​rsync.html|-> ​gepatchte Version]] in seinem Blog bereit gestellt, welche den korrekten Transport der EAs gewährleisten soll((http://​www.bombich.com/​rsync.html)). Aber auch diese Version hatte einen Bug, welcher vor Allem bei hohen Datenmengen und großen Verzeichnistiefen wieder für Probleme bei den erweiterten Attributen sorgte aber dieser Bug wurde im März 2011 dann von Mike gefixt und ab da konnten wir auch erfolgreich unseren Fileserver migrieren. Einen herzlichen Dank an Mike an dieser Stelle für den Bugfix.+In diesem speziellen Setup war jedoch eine gepatchte rsync Version von Nöten. Bei der Default rsync Version 3.0.7 werden die erweiterten Attribute auf dem Quellserver nicht korrekt ausgelesen, was beim Transport einen Fehler erzeugt. Mike Bombich hat eine gepatchte Version in seinem Blog bereit gestellt, welche den korrekten Transport der EAs gewährleisten soll((http://​www.bombich.com/​rsync.html)). Aber auch diese Version hatte einen Bug, welcher vor Allem bei hohen Datenmengen und großen Verzeichnistiefen wieder für Probleme bei den erweiterten Attributen sorgte aber dieser Bug wurde im März 2011 dann von Mike gefixt und ab da konnten wir auch erfolgreich unseren Fileserver migrieren. Einen herzlichen Dank an Mike an dieser Stelle für den Bugfix. Leider ist es Stand 05/2013 nun so, dass Mike diese Version von seiner Webseite entfernt hat
 \\ \\  \\ \\ 
  --- //pronto 2011/01/28 10:10//  --- //pronto 2011/01/28 10:10//
 {{keywords>​rsync resource fork extended attribute xattr bombich 3.0.7 copy synchronisieren}} {{keywords>​rsync resource fork extended attribute xattr bombich 3.0.7 copy synchronisieren}}
tux/rsync.1302784689.txt.gz (35583 views) · Zuletzt geändert: 2011/04/16 19:54 (Externe Bearbeitung)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0