0x1b - ESCAPE
HTML PDF Postscript
 rsync von MacOS X nach Linux 
Computer Geschrieben von Beat Rubischon (Link) am Donnerstag, 10. Dezember 2009, 11:18
aus dem *böse-files* dept.

MacOS X hat - obwohl fast ein UNIX - noch immer die alten Resource Forks im Filesystem. Zwischen zwei Macs lassen sich diese prima kopieren, nur wie finden sie von einem Mac auf einen Linux Server? Die Frage stellte ich mir eben, da die iPhoto Library die Verknüpfung zu ihrem Programm über ein Extended Attribute erstellt.

Es gibt verschiedene Varianten, die ich schon ausprobiert habe:
  • Apple's eigener rsync -E auf ein SMB oder NFS Share. Auf dem Zielfilesystem werden die ResourceForks als ._-Files im AppleDouble Format abgelegt. Etwas mühsam, erst das Share zu mounten und dann zu syncen.
  • rsync 3.0.x bildet Resource Forks in Extended Attributes ab und überträgt sie über denselben Weg wie UNIX Extended Attributes. Scheint noch etwas hakelig zu sein und das Zielverzeichnis kann nicht über SMB oder NFS von einem Mac aus verwendet werden.
  • rsync+hfsmode verpackt die Resource Forks in ._-Files und übermittelt sie über das normale rsync Protokoll. Nahe dran! Leider macht er das nur für Files, aber nicht für Directories. Entsprechend keine Lösung für die iPhoto Library.
  • Ein Apple rsync unter Linux. Die Idee brachte mir dieses Forumsposting.
Also erst das Tar von Apple's rsync herunterladen. Auspacken und Konfigurieren:
$ wget http://www.opensource.apple.com/tarballs/rsync/rsync-35.2.tar.gz
$ tar xvfz rsync-35.2.tar.gz
$ cd rsync-35.2/rsync
$ ./configure
Nun muss config.h angepasst werden:
--- config.h.orig	2009-12-10 11:12:38.000000000 +0100
+++ config.h	2009-12-10 11:12:38.000000000 +0100
@@ -22,11 +22,11 @@
 /* #undef C_ALLOCA */
 
 /* true if ea support enabled */
-#ifdef __APPLE__
+// #ifdef __APPLE__
 #define EA_SUPPORT
-#else
+// #else
 /* #undef EA_SUPPORT */
-#endif
+// #endif
 
 /* Define to the type of elements in the array set by `getgroups'. Usually
    this is either `int' or `gid_t'. */
Und ab ans Bauen:
$ make
# cp rsync /usr/local/bin/macrsync
Ich benenne das Binary bewusst um, um für normale rsyncs das von der Distribution gepatchte Binary zu verwenden. Gerade für einen rsyncd sollte ein maintainter rsync und kein Eigenbau eingesetzt werden :-)

Ab sofort kann ich meine iPhoto Library auf meinen heimischen Server backuppen:
mac$ rsync -aEv --delete --rsync-path=macrsync \
  ~/Pictures/ \
  linux:~/Pictures/
*freu*

Permalink