Rsync kopiert einige Dateien mit erweiterten Attributen nicht

4

Ich versuche, eine Synchronisierung von einem über das Netzwerk bereitgestellten Volume auf meinen Desktop durchzuführen. Einige, jedoch nicht alle Dateien werden aufgrund eines Rsync-Fehlers nicht kopiert. Ich verwende Rsync 3.1.1 von Brew. Ich benutze diesen Befehl:

rsync -aXv  /Volumes/Scotts\ Stuff/Backgrounds ~/Desktop/Temp

Ich erhalte jedoch diesen Fehler für einige der Dateien:

get_xattr_data: lgetxattr(""/Volumes/Scotts Stuff/Backgrounds/chalkboard-black.jpg"","com.apple.ResourceFork",88644) returned 65536

Irgendwelche Ideen? Einige Dateien mit erweiterten Attributen können problemlos kopiert werden, andere erhalten jedoch den Fehler. Wenn ich die Option "X" weglasse, funktioniert rsync, aber die erweiterten Attribute bleiben natürlich nicht erhalten.

Scott Walter
quelle
Was ist an diesen Dateien noch anders? nur die .jpg oder andere?
Ruskes
2
Zwei Vorschläge. Versuchen Sie zunächst, die erweiterten Attribute mit einem anderen Befehl zu lesen, um sicherzustellen, dass sie außerhalb einwandfrei funktionieren, und drucken Sie rsyncbeispielsweise ls -al@ "/Volumes/Scotts Stuff/Backgrounds/chalkboard-black.jpg"die Attributnamen und -werte für diese Datei aus. Gibt dies den Namen des Attributs (der Attribute) zurück? Zweitens können Sie rsync mit mehreren ausführlichen "v" -Parametern ausführen, um mehr Details über den Fehler zu erhalten rsync -aXvvv /Volumes/Scotts\ Stuff/Backgrounds ~/Desktop/Temp. Dies kann Ihnen helfen, die Ursache des Problems zu ermitteln.
Alistair McMillan
Ich habe versucht, mit dem Befehl ls -al @ die erweiterten Attributnamen und -größen auszudrucken. Die meisten erweiterten Attribute haben eine Länge von weniger als 300 Byte, mit Ausnahme von com.apple.ResourceFork mit mehr als 87 KB. Die Dateien, die mit rsync kopiert wurden, haben ebenfalls com.apple.ResourceFork, sind jedoch nur 2 Byte groß. Ich weiß nicht, ob die Größe der Ressourcengabel Teil des Problems ist.
Scott Walter
Ein Punkt, den ich ursprünglich nicht erwähnt habe, ist, dass es sich bei dem fraglichen Netzwerk-Volume um ein Synology NAS-Volume handelt. Ich weiß nicht, ob es etwas damit zu tun hat, ein SMB-Mount zu sein.
Scott Walter

Antworten:

3

Das Problem, das ich auf vielen Versionen von MacOS X (Mountain Lion, Mavericks, Yosemite, El Capitan) reproduziert habe, die eine viel zu alte Version von rsync(2.6.9) und neuere Versionen von Macports (3.x) verwenden, wurde behoben mit der Version 3.1.2.

Standard MacOS X rsync 2.6.9 → Fehler

••On_my_Mac••% /usr/bin/rsync -avE example example2
building file list ... done
._example
example/color-profile-1
example/._color-profile-1
example/index.xml.gz
example/Contents/
rsync: recv_generator: mkdir "/Users/Shared/tmp/example2/example/Contents" failed: Permission denied (13)
*** Skipping everything below this failed directory ***
example/QuickLook/
rsync: recv_generator: mkdir "/Users/Shared/tmp/example2/example/QuickLook" failed: Permission denied (13)
*** Skipping everything below this failed directory ***
rsync: mkstemp "/Users/Shared/tmp/example2/example/.color-profile-1.zFdjjF" failed: Permission denied (13)
rsync: mkstemp "/Users/Shared/tmp/example2/example/.._color-profile-1.ySmazZ" failed: Permission denied (13)
rsync: mkstemp "/Users/Shared/tmp/example2/example/.index.xml.gz.zB0WUl" failed: Permission denied (13)
copyfile(/dev/null, example/Contents, COPYFILE_METADATA) failed:2
copyfile(/dev/null, example/QuickLook, COPYFILE_METADATA) failed:13

sent 157793 bytes  received 120 bytes  315826.00 bytes/sec
total size is 461293  speedup is 2.92
rsync error: some files could not be transferred (code 23) at /SourceCache/rsync/rsync-45/rsync/main.c(992) [sender=2.6.9]
••On_my_Mac••%

Built rsync 3.1.2 → Erfolg

••On_my_Mac••% type rsync
rsync is /opt/local/bin/rsync
••On_my_Mac••% rsync --version
rsync  version 3.1.2  protocol version 31
Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, xattrs, iconv, symtimes, no prealloc, file-flags,
    HFS-compression

rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
are welcome to redistribute it under certain conditions.  See the GNU
General Public Licence for details.
••On_my_Mac••%


••On_my_Mac••% /usr/bin/sudo rm -rf example2
••On_my_Mac••% /opt/local/bin/rsync -avAX --fake-super example example2
sending incremental file list
created directory example2
example/
example/color-profile-1
example/index.xml.gz
example/Contents/
example/Contents/PkgInfo
example/QuickLook/
example/QuickLook/Preview.pdf
example/QuickLook/Thumbnail.jpg

sent 462,152 bytes  received 167 bytes  924,638.00 bytes/sec
total size is 461,293  speedup is 1.00
••On_my_Mac••%

2 wichtige Details zu beachten:

  • die -EOption wurde geändert in -AX(ACL & erweiterte Attribute)
  • die Verwendung von --fake-super, um Dateien in schreibgeschützte Verzeichnisse kopieren zu können

So verwenden Sie es auf verschiedenen Macs

Wenn Sie einen Rsync auf einem Remote-Mac ausführen möchten, müssen Sie den rsyncauf dem Remote-Mac eingebauten explizit mit der folgenden --rsync-commandOption aufrufen :

/opt/local/bin/rsync -avAX --fake-super --rsync-command=/opt/local/bin/rsync example remote_MAC:/tmp/example2 
Dan
quelle
Dies schlägt aufgrund von SIP fehl, wenn Sie versuchen, eine Time Machine-Sicherung damit zu kopieren. apple.stackexchange.com/questions/366577/…
WGroleau