Ich vergleiche zwei große Verzeichnisse auf zwei verschiedenen externen FireWire 800-Festplatten
diff -r /path/to/directory1 /path/to/directory2
Die Größe des Verzeichnisses (und seiner Unterverzeichnisse) auf einer FireWire-Festplatte beträgt 118,2 GB für 30.000 Elemente und 119,56 GB für 30.031 Elemente.
Ich war überrascht über die vielen Unterschiede, die in der Ausgabe gemeldet wurden
Binary files /path/to/directory1/with/subdirectory/file_xyz and /path/to/directory2/with/subdirectory/file_xyz differ
und begann einige von ihnen einzeln zu vergleichen. Wenn ich sie vergleiche mit
diff /path/to/directory1/with/subdirectory/with/subdirectory/file_xyz /path/to/directory2/with/subdirectory/with/subdirectory/file_xyz
oder auch
diff /path/to/directory1/with/subdirectory/ /path/to/directory2/with/subdirectory/
diff
meldet keine Unterschiede zwischen diesen Dateien oder Verzeichnissen.
Was könnte ein Grund sein, warum der "große Vergleich" so viele Unterschiede meldet (oder anscheinend fehlschlägt), während der kleinere Blockvergleich dies nicht tut?
Änderungen seit dem ursprünglichen Beitrag:
- Die von
diff
mir verwendete Version ist GNU Diffutils 2.8.1. - Nur eine wilde Vermutung hier, aber könnte es etwas damit zu tun haben, dass sich diese Verzeichnisse auf externen Festplatten befinden, die eine Art Timeout erfahren könnten?
- Ich führte einen weiteren Vergleich durch und wurde erneut mit vielen Unterschieden zwischen diesen Verzeichnissen konfrontiert. Ich habe dann den Energiesparmodus der Systemeinstellung so eingestellt, dass das Display 1 Stunde lang nicht in den Ruhezustand versetzt wird, da ich gemessen hatte,
time diff -r /path/to/directory1 /path/to/directory2
dass es zwischen 45 und 50 Minuten dauert, bis das Diff fertig ist. Meine Festplatten und der Mac schlafen nie ein.
Ich habe dann beide Laufwerke abgehängt und wieder angehängt. Lief das Diff wieder und voilà keine Unterschiede außer einer Datei gefunden. Ich habe die angegebene Datei manuell verglichen und festgestellt, dass sie identisch ist.
Dies scheint zu bestätigen, was ich durch den Vergleich kleinerer Stücke zuvor gefunden habe. Es scheint auch zu bestätigen, dass mit einem Timeout, wie zuvor vermutet, etwas los ist, aber ich frage mich immer noch, obWenn ein FireWire-Laufwerk nicht mehr verfügbar ist oder was auch immer, sollte diff keinen Unterschied melden, sondern "Datei nicht verfügbar" oder "Nur in / yada / yada / directory: file_xyz" sagen.
Interessanterweise dauerte der Unterschied vor dem erneuten Einhängen 28 Minuten, nach dem erneuten Einhängen fast 51 Minuten.
Im Lichte dessen: Was kann ich tun, um so etwas zu verhindern?
Man könnte natürlich sagen, dass man das Display niemals so einstellen soll, dass es in den Ruhezustand wechselt, aber das scheint das zugrunde liegende Problem kaum zu lösen. Etwas anderes muss los sein, ich kann einfach nicht herausfinden, was.
Abgesehen davon habe ich bei früheren Gelegenheiten nach einer gewissen Zeit der Inaktivität auf diesen FireWire - Festplatten versucht, in eine Datei zu schreiben und habe die Meldung * Fehlercode - 50 "erhalten (wohlgemerkt, dass ich während des Tests nichts davon gesehen habe) Ich konnte das Problem immer "lösen", indem ich die Laufwerke abmontierte und erneut montierte, aber ich glaube, dass es eine ganz andere Lösung dafür geben muss: Lösungen wie die hier vorgestellten scheinen das zugrunde liegende Problem kaum anzugehen.