diff: memory exhausted
Beim Versuch, zwei 27-GB-Dateien zu unterscheiden, die auf einer Linux-Box mit CentOS 5 und 4 GB RAM weitgehend ähnlich sind , wird eine Fehlermeldung angezeigt. Dies ist anscheinend ein bekanntes Problem.
Ich würde erwarten, dass es eine Alternative für solch ein wesentliches Hilfsprogramm gibt, aber ich kann keine finden. Ich stelle mir vor, die Lösung müsste eher temporäre Dateien als Speicher verwenden, um die benötigten Informationen zu speichern.
- Ich habe versucht,
rdiff
und zu verwendenxdelta
, aber sie sind besser, um die Änderungen zwischen zwei Dateien anzuzeigen, wie ein Patch, und nicht so nützlich, um die Unterschiede zwischen zwei Dateien zu untersuchen. - Versuchte VBinDiff , aber es ist ein visuelles Werkzeug, das besser zum Vergleichen von Binärdateien ist. Ich brauche etwas, das die Unterschiede zu STDOUT wie normal leiten kann
diff
. - Es gibt viele andere Dienstprogramme
vimdiff
, die nur mit kleineren Dateien funktionieren. - Ich habe auch über Solaris gelesen,
bdiff
aber ich konnte keinen Port für Linux finden.
Haben Sie außer der Aufteilung der Datei in kleinere Teile noch weitere Ideen? Ich habe 40 dieser Dateien, also versuche ich zu vermeiden, dass sie getrennt werden.
Antworten:
cmp
Tut Dinge byteweise, so dass es wahrscheinlich nicht zu wenig Speicher gibt (es wurde nur an zwei 7-GB-Dateien getestet) - aber Sie suchen möglicherweise nach mehr Details als eine Liste von Dateien, bei denen sich X und Y byteweise unterscheiden x , Zeile y ". Wenn die Ähnlichkeiten Ihrer Dateien versetzt sind (z. B. Datei Y enthält einen identischen Textblock, jedoch nicht an derselben Stelle), können Sie Offsets an übergebencmp
. Sie könnten es wahrscheinlich in einen resynchronisierenden Vergleich mit einem kleinen Skript verwandeln.Nebenbei: Falls noch jemand hier landet, um zu bestätigen, dass zwei Verzeichnisstrukturen (mit sehr großen Dateien) identisch sind:
diff --recursive --brief
(oderdiff -r -q
kurz, oder vielleicht sogardiff -rq
) funktionieren und nicht über genügend Arbeitsspeicher verfügen.quelle
Ich habe diesen Link gefunden
Ich bin mir nicht sicher, ob Sie diese beiden Optionen ausprobiert haben oder ob sie für Sie funktionieren könnten. Viel Glück.
quelle
diff -H
Ist ein undokumentierter und veralteter Alias fürdiff --speed-large-files
.Wenn die Dateien mit Ausnahme einiger Bytewerte identisch sind (gleiche Länge), können Sie ein Skript wie das folgende verwenden (
w
ist die Anzahl der Bytes pro zu hexdumpender Zeile, passen Sie sie an Ihre Anzeigebreite an):Es ist nicht sehr schnell, aber macht den Job.
quelle