bdiff(1)
In Solaris gibt es Befehle, mit denen Sie diff(1)
Dateien mit einer Größe erstellen können, die größer als Ihre RAM-Größe ist ( http://docs.oracle.com/cd/E19683-01/806-7612/files-23/index.html ).
Gibt es so etwas unter Linux? Ich habe versucht zu googeln, finde aber nicht, welches Paket bdiff
in Ubuntu enthalten ist.
Antworten:
bdiff scheint unter Linux verfügbar zu sein (zumindest als Teil der Heirloom Toolchest ).
diff
Ich würde wahrscheinlich nur normales altes Diff mit diesem Schalter verwenden:
Warum funktioniert es nicht?
Siehe Kommentar von @EvanTeitelman,
--speed-large-files
hat keinen Einfluss darauf, wie Dateien in den Speicher geladen werden.Kann mit dem folgenden Befehl nachgewiesen / bestätigt werden, dass er nicht funktioniert:
bsdiff
Es ist schwer, dies zu bestätigen, aber ich habe ein Tool namens gefunden,
bsdiff
das von abgeleitet istbdiff
. Ich habe bestätigt, dass dieses Tool einfach in Ubuntu istapt-get install bsdiff
.Warum könnte es funktionieren?
Nochmals vielen Dank an @EvanTeitelman in den Kommentaren, das
bsdiff
obige ist ein Diff-Tool für Binärdateien.bsdiff
ist ein binäres Diff-Tool und kann mit großen Dateien umgehen. Es ist unklar, wie groß. Siehe die folgenden Links zu einem Thread, in dem die Verwendung erläutert wird.rdiff
Ich denke, Sie könnten auch rdiff verwenden , um dies zu tun. Rdiff kann mit sehr großen Dateien umgehen.
Erstellen Sie eine Signatur einer Datei:
Verwenden Sie die generierte Signaturdatei sigs.txt und die andere große Datei B, um das Delta zu erstellen:
Delta enthält alle Informationen, die Sie benötigen, um Datei B neu zu erstellen, wenn Sie nur A und die Delta-Datei deltaAB.txt haben.
Führen Sie Folgendes aus, um B neu zu erstellen:
Warum funktioniert es?
Ich fand diesen Blog-Beitrag mit dem Titel: Ein besserer Diff oder was zu tun ist, wenn der GNU-Diff nicht genügend Speicher hat ("diff: Speicher erschöpft") , der besagt, dass ein Riff von 4,5 GB-Dateien nur ~ 66 MB RAM verbraucht.
lfhex
lfhex ist eine Anwendung zum Anzeigen und Bearbeiten von Dateien in hexadezimalem, oktalem, binärem oder ASCII-Text. Die Hauptstärke von lfhex ist die Fähigkeit, mit Dateien zu arbeiten, die viel größer als der Systemspeicher sind. Es ist jedoch ein GUI-Tool.
Bildschirmfoto
Verweise
quelle
-H
als Synonym für verwenden--speed-large-files
.bsdiff
ist ein binäres Diff-Tool, kein Diff-Tool für große Dateien.--speed-large-files
Flag keinen Einfluss auf die Art und Weise zu haben, in der GNU diff Dateien in den Speicher lädt. Versuchen Sie zu laufenfallocate -l 10G testa; fallocate -l 10G testb && diff --speed-large-files -a testa testb
, um dies zu bestätigen. (Oder werfen Sie einen Blick auf den Quellcode.)bdiff
aus dem Erbstück Werkzeugkasten nach dem Austausch/sbin/sh
von/bin/sh
in dem Makefiles. Wenn ich jetzt versuche, es an Ort und Stelle auszuführen, bekomme ichbdiff: Can not execute '/usr/5bin/diff'
. Entschuldigung, ich möchte nichts installieren/usr/5bin/
. Dies ist keine praktikable Lösung. Die anderen hier genannten Optionen funktionieren bei mir nicht, da ich die Unterschiede als Text betrachten möchte.lfhex -c file1 file2
funktioniert es gut für mich, nachdem ich für beide Fenster Ansicht -> Basis bearbeiten -> ASCII eingestellt habe.