copyfile-Fehler und dot-Dateien mit rsync

Ich habe die Frage von @SwisherSweet zum schnellsten und sichersten Weg zum Kopieren massiver Daten von einem externen Laufwerk auf ein anderes gelesen, zusammen mit der hervorragenden Antwort von @GrahamMiln .

Ich befinde mich in einer ähnlichen Situation, in der ich Daten von einer über Firewire 800 angeschlossenen externen Festplatte auf Drobo 5N kopieren möchte, das mit dem Router verbunden ist, mit dem der iMac verbunden ist: ExternalHd – iMac – Router –
Drobo5N

Ich habe den Befehl ( ) ausgeführt sudo rsync -vaE --progress /Volumes/SourceName /Volumes/DestinationNameund er funktioniert teilweise, aber gelegentlich erhalte ich die folgende Fehlermeldung (ich habe zur besseren Lesbarkeit einige Zeilenumbrüche eingefügt):

Boxx:~ Alex$ sudo rsync -vaE --progress /Volumes/ExternalHd/path/to/MyDirectory /Volumes/Drobo5N/path/to/

building file list ... 
6 files to consider

._MyDirectory
        1104 100%    0.00kB/s    0:00:00 (xfer#1, to-check=5/6)

MyDirectory/._file1.dmg
        1430 100%   34.06kB/s    0:00:00 (xfer#2, to-check=3/6)

MyDirectory/._file2.dmg
        1430 100%   27.38kB/s    0:00:00 (xfer#3, to-check=2/6)

copyfile(.._MyDirectory.drJHX3,./MyDirectory, COPYFILE_UNPACK) failed:45
copyfile(MyDirectory/.._file1.dmg.PQTcsU,MyDirectory/file1.dmg, COPYFILE_UNPACK) failed:45
rsync: rename "/Volumes/Drobo5N/path/to/MyDirectory/.._file1.dmg.PQTcsU" -> "MyDirectory/._file1.dmg": No such file or directory (2)
copyfile(MyDirectory/.._file2.dmg.gx7VTP,MyDirectory/file2.dmg, COPYFILE_UNPACK) failed:45
rsync: rename "/Volumes/Drobo5N/path/to/MyDirectory/.._file2.dmg.gx7VTP" -> "MyDirectory/._file2.dmg": No such file or directory (2)

sent 4369 bytes  received 86 bytes  8910.00 bytes/sec
total size is 48176733  speedup is 10814.08

rsync error: some files could not be transferred (code 23) at /BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-47/rsync/main.c(992) [sender=2.6.9]

Einige Fragen:

  1. Warum erhalte ich diese copyfile(...) failed:45Fehler?
    Ich habe den Quellcode für copyfile.c gefunden , konnte aber nicht herausfinden, was den Fehler auslöst. Dort steht über COPYFILE_UNPACK:

    COPYFILE_UNPACK ist offensichtlich das Rückgängigmachen von COPYFILE_PACK. Das Ziel dort ist es, eine Apple Double-Datei zu nehmen und sie in eine normale Datei umzuwandeln (mit Data Fork, Resource Fork, Modi, erweiterten Attributen, ACLs usw.).

    Meine Fehlermeldung sagt etwas über aus COPYFILE_UNPACK, aber was bedeutet das und wie kann ich den Fehler beheben?

  2. Warum rsyncerstellt der Befehl die Punktdatei wie ._file1.dmg?
    Nach rsyncerfolgreichem Abschluss sehe ich immer noch die Punktdatei im synchronisierten Zielverzeichnis (/Volumes/Drobo5N/path/to/) zusätzlich zur eigentlichen synchronisierten Datei. Warum das?
  3. Warum rsyncerstellt man Erweiterungen wie .drJHX3? Ist das ein temporärer Name?

PS: Entschuldigung, falls die Frage woanders gestellt wurde. Ich habe mit rsync nach diesem Fehler gesucht, konnte aber keinen finden.

Apples rsync ist alt, daher würde ich ein aktuelleres finden, insbesondere bei Metadatenproblemen. Auch welches Format haben die Laufwerke
Wollen Sie damit sagen, dass die Copyfile-Fehler auf Metadatenprobleme zurückzuführen sind? Meinen Sie mit "Format" das Dateisystem? Ich muss nachschlagen, wenn ich wieder an meinem Schreibtisch sitze … Sollte ich mich wundern, wenn das Dateisystem HFS+ ist, weil der Ressourcen-/Metadaten-Fork als separate Datei gespeichert ist?
@Mark Würden Sie ein Update über MacPorts empfehlen
@graham-miln Da Sie die siegreiche Antwort auf die Frage gegeben haben, die meine Frage hier ausgelöst hat, habe ich mich gefragt, ob Sie etwas Input haben, wenn Sie möchten.
Fehler 45 ist definiert in /usr/include/sys/errno.h-#define ENOTSUP 45 /* Operation not supported */
Ich sehe das auch sehr oft. Ich glaube, es hat etwas mit der Übertragung von Daten von HFS + auf ein Nicht-HFS + -Dateisystem zu tun, das keine MacOS-Dateisystemfunktionen unterstützt.

Antworten (2)

Ich habe die Option -E verwendet, um Aliasdateien unter macOS zu kopieren (da Aliasdateien ohne die Option -E als ausführbare Dateien kopiert werden). Die -E-Optionen funktionierten beim Kopieren der Alias-Dateien, verursachten aber den gleichen Fehler wie hier bei anderen Dateien ( COPYFILE_UNPACK failed:45). Daher wird der Fehler wahrscheinlich durch die Verwendung der Option -E in macOS verursacht.

Glücklicherweise wurde das Problem behoben , indem Homebrew verwendet und ausgeführt wurde brew install rsync, um eine neuere Version von zu installieren .rsync

Quelle: https://bayton.org/2018/07/how-to-update-rsync-on-mac-os-high-sierra/

Copyfile ist dafür verantwortlich, eine HFS+-Datei in zwei Dateien aufzuteilen. Der Data Fork- fileund ein Metadata Fork- ._file. Das passiert, wenn Sie die -Evon Apple mitgelieferte Option verwenden rsync. Ich habe keine Ahnung, warum es fehlschlägt. rsyncerstellt temporäre Dateien und verschiebt sie dann an ihren Platz.