Ich bin sudo rsync -va --progress
vom Stammverzeichnis eines externen Laufwerks in einen Ordner auf einem anderen externen Laufwerk gelaufen . Der Grund ist, dass das Quelllaufwerk ein fehlerhaftes NTFS hat und ich keinen Zugriff auf einen Windows-PC habe, um das NTFS zu reparieren.
10 Stunden später hieß es:
sent 608725204596 bytes received 19365712 bytes 15902210.53 bytes/sec
total size is 608586212274 speedup is 1.00
rsync error: some files could not be transferred (code 23) at /SourceCache/rsync/rsync-42/rsync/main.c(992) [sender=2.6.9]
Ich habe die gesamte Terminalausgabe gespeichert. Am Anfang gibt es ein paar Hundert Input/output error (5)
für Dateien, die ich eigentlich nicht brauche, insgesamt ungefähr 2 GB. Die "Datenträgernutzung" in OSX Finder gibt an, dass die Quelle 617 Milliarden Bytes beträgt, nicht 608 wie im obigen Bericht.
Fragen:
- Sagt der erste Teil der ausführlichen Ausgabe (Erstellen einer Dateiliste) definitiv
Input/output error (5)
für JEDE Datei, die nicht kopiert wird? - Bedeutet
code 23
dies, dass alle Dateien mit AusnahmeInput/output error (5)
derjenigen erfolgreich kopiert wurden?
grep '^rsync: ' output
möglicherweise hilfreich.Antworten:
23
bedeutet nur (von der Manpage):Für alles, was nicht übertragen werden konnte, erhalten Sie eine Fehlermeldung. Beachten Sie, dass es sich bei den Fehlermeldungen möglicherweise um das Öffnen oder Lesen von Verzeichnissen handelt, sodass nicht unbedingt für jede Datei eine Fehlermeldung angezeigt wird, die nicht übertragen werden konnte.
Wenn sich Ihre Quelle nicht geändert hat, können Sie die
rsync
erneut mit ausführen , um-n
zu sehen, was diesmal übertragen werden würde, ohne die Übertragung tatsächlich durchzuführen.Über die Bytedifferenz erhalten
rsync
Sie die Größe der Dateien (wie viele Daten aus ihnen gelesen werden können). Sind Sie sicher,Finder
dass Sie nicht stattdessen die Datenträgernutzung erfahren ?Beachten Sie auch, dass NTFS Daten in alternativen Streams oder Attributen der Dateien speichern kann und
rsync
diese normalerweise nicht überträgt (nicht berücksichtigt) (und das kann auch eine Menge ausmachen).quelle
Input/output error (5)
?Input/output error (5)
. Können Sie erklären?echo > file; du -k file
zu sehen, wie viel auf dem Quelldateisystem vorhanden ist, aber auf ntfs sind es normalerweise 4 KB).rsync
wird Ihnen sagen, dass die Größe ist1
, aber Finder kann Ihnen 4096 für diese Datei mitteilen./foo/bar
und/foo/bar/baz
auch nicht übertragen worden.Sie können die fehlerfreie Ausgabe von rsync mit dem
-q
Flag rsync stumm schalten.Wenn Sie rsync erneut mit dem
-q
Flag ausführen, schlägt rsync wahrscheinlich immer noch fehl, aber mindestens dieses Mal werden alle Fehlermeldungen, die Ihr Problem verursachen, nicht unter Zeilen und Zeilen mit Dateiübertragungsstatusmeldungen vergraben.quelle
Betreff: Fehler 23 - Der häufigste Grund für diesen Fehler ist ein Tippfehler in der rsync-Quelle. Sehen Sie sich Ihren Quellcode-Befehl an und vergewissern Sie sich, dass alles mit ls abgeglichen ist. Suchen Sie nach dummen, subtilen Dingen wie einem zusätzlichen Leerzeichen oder einem 1-l-Problem.
quelle