Wie kopiere ich Time Machine-Volume mit rsync auf eine andere Festplatte, während ACLs erhalten bleiben?


9

Vor kurzem musste ich das Dateisystem meines Mac von Groß- und Kleinschreibung auf Groß- und Kleinschreibung umstellen. Dazu habe ich CCC verwendet, Daten auf eine andere Festplatte kopiert und dann zur neu formatierten Hauptfestplatte zurückgekehrt.

Jetzt wollte ich die Time Machine-Sicherung auf meiner alten Time Machine-Festplatte durchführen, die auf meinem FreeBSD-basierten NAS gehostet und über AFP exportiert wird. Es wird jedoch eine Fehlermeldung angezeigt, dass Dateisysteme nicht übereinstimmen, da Time Machine immer noch nicht zwischen Groß- und Kleinschreibung unterscheidende fs hat. Dieses Mal kann ich CCC nicht verwenden, da es keine Kopie auf Dateiebene für Time Machine-Volumes unterstützt.

Natürlich habe ich mich direkt für rsync entschieden, aber das wirft ein Problem auf - wenn ich es ausführe mit:

/usr/local/bin/rsync --super -aEHAXNvx --fileflags --delete /Volumes/Time\ Machine\ Backups/ /Volumes/NewDisk/

es beginnt sich zu beschweren, sobald es Backups.backupdb/<machinename>Ordner mit trifft failed to set permissions, operation not permitted. Das Problem hierbei ist das Kopieren von ACLs, die recht restriktiv sind:

 ll -dle /Volumes/Time\ Machine\ Backups/Backups.backupdb/<machinename>/
 drwxr-xr-x@ 19 root  staff  646 Dec 23 09:38 /Volumes/Time Machine Backups/Backups.backupdb/<machinename>/
 0: group:everyone deny add_file,delete,add_subdirectory,delete_child,writeattr,writeextattr,chown

Also habe ich -Aden obigen Befehl entfernt und rsync verschiebt jetzt glücklich GB Daten.

Leider möchte ich auch ACLs erhalten. Ist das irgendwie möglich? OS X hat kein getfacl / setfacl, und ich möchte das Parsen der Ausgabe von vermeiden ls -le. Was ich hier als Lösung sehe, ist, rsync irgendwie anzuweisen, ACLs "rückwärts" anzuwenden, dh von Blattdateien bis zu Verzeichnissen, aber es gibt keine Option dafür.


Wird rsync am Zielende als Benutzer mit der Berechtigung zum Ändern dieser Dateien ausgeführt?
Harryc

Dies mag eine offensichtliche Frage sein, aber sind Sie sicher, dass die ACL-Unterstützung auf dem Zieldatenträger aktiviert ist? Sie implizieren, dass Sie auf einen Mac kopieren, was sollte, aber in diesem Fall sollte es einfach funktionieren, es sei denn, der Benutzer an diesem Ende hat nicht die gleiche Benutzer-ID # wie die Originaldateien. In diesem Fall müssen Sie wahrscheinlich festlegen das auf oder wechseln Sie zur Verwendung von root (offensichtlich keine gute Sache, kümmert sich aber um das Berechtigungsproblem, das Eigentum an jemand anderem zu übertragen).
Tom Scogland

Außerdem sollte dieses Benutzerkonto für das Ziel definiert werden, da sonst der Eigentümer nicht festgelegt werden kann.
Harrymc

Antworten:


3

Laden Sie rsync Version 3 mit Homebrew herunter. Dann können Sie die Option "--acls" ausprobieren. Der rsync auf dem Mac scheint eine etwas andere Befehlszeilensyntax zu haben als andere Betriebssysteme. Sie möchten wahrscheinlich einen Blick auf diesen Link werfen: http://nicolasgallagher.com/mac-osx-bootable-backup-drive-with-rsync/ . Es beschreibt, wie Sie rsync 3 und die von ihm verwendeten Befehlszeilenargumente abrufen.

Ich bin kein OSX-Benutzer, aber ich sichere den Mac meiner Frau mit rsync auf einem Linux-Server.


2

rsync überträgt zumindest in OS X 10.4 und den folgenden ACL-Attributen, wenn die Option -E verwendet wird. Siehe die Manpage.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.