bdiff(1)
Solarisにdiff(1)
は、RAMサイズよりも大きいサイズのファイルを許可するコマンドがあります(http://docs.oracle.com/cd/E19683-01/806-7612/files-23/index.html)。
Linuxにそのようなものはありますか?私はグーグルで試しましたがbdiff
、Ubuntuにどのパッケージがあるかわかりません。
bdiff(1)
Solarisにdiff(1)
は、RAMサイズよりも大きいサイズのファイルを許可するコマンドがあります(http://docs.oracle.com/cd/E19683-01/806-7612/files-23/index.html)。
Linuxにそのようなものはありますか?私はグーグルで試しましたがbdiff
、Ubuntuにどのパッケージがあるかわかりません。
回答:
bdiffはLinux で利用できるようです(少なくともHeirloom Toolchestの一部として)。
私はおそらくこのスイッチで通常の古い差分を使用するでしょう:
diff --speed-large-files bigfileA bigfileB
@EvanTeitelmanによるコメントを参照してください--speed-large-files
。ファイルがメモリにロードされる方法には影響しません。
次のコマンドを使用して、動作しないことを実証/確認できます。
fallocate -l 10G testa; fallocate -l 10G testb && \
diff --speed-large-files -a testa testb
これを確認するのは難しいですが、bsdiff
から派生するというツールを見つけましたbdiff
。このツールがUbuntuにあることを確認しましたapt-get install bsdiff
。
コメントで@EvanTeitelmanに感謝しbsdiff
ます。上記はバイナリファイルの差分ツールです。bsdiff
バイナリdiffツールであり、大きなファイルを処理できます。どれだけ大きいかは不明です。使用方法については、次のスレッドへのリンクを参照してください。
rdiffを使用してこれを行うこともできると思います。Rdiffは非常に大きなファイルを処理できます。
1つのファイルの署名を作成します。
rdiff signature A sigs.txt
生成された署名ファイルsigs.txtと他の大きなファイルBを使用して、デルタを作成します。
rdiff delta sigs.txt B deltaAB.txt
デルタには、AとデルタファイルdeltaAB.txtしかない場合にファイルBを再作成するために必要なすべての情報が含まれています。
Bを再作成するには、次のコマンドを実行します。
rdiff patch A deltaAB.txt B
次のタイトルのブログ投稿を見つけました:より良いdiffまたはGNU diffがメモリを使い果たしたときの対処方法( "diff:メモリが使い尽くされました")、4.5GBのファイルのrdiffは〜66MBのRAMしか消費しなかったと報告しています。
lfhexは、16進数、8進数、バイナリ、またはASCIIテキストでファイルを表示および編集するためのアプリケーションです。lfhexの主な長所は、システムメモリよりもはるかに大きいファイルを操作できることです。ただし、GUIツールです。
--speed-large-files
フラグはGNU diffがファイルをメモリにロードする方法に影響を与えないようです。fallocate -l 10G testa; fallocate -l 10G testb && diff --speed-large-files -a testa testb
これを確認するために実行してみてください。(またはソースコードを見てください。)
bdiff
置き換え/sbin/sh
た後、Heirloom Toolchest からビルドでき/bin/sh
ました。これを適切に実行しようとすると、が表示されますbdiff: Can not execute '/usr/5bin/diff'
。申し訳ありませんが、には何もインストールしません/usr/5bin/
。これは実行可能なソリューションではありません。ここで説明した他のオプションは、違いをテキストとして目立たせたいので機能しません。
lfhex -c file1 file2
両方のペインで[表示]-> [ベースの編集]-> [ASCII]を設定すると、うまく機能します。