2013-03-07 100 views
8

2つの大きなサイズのフォルダ(〜7GB)を使用してパッチを作成しようとしています。ここでメモリが使い果たされました:diffを使用する大きなファイルの場合

は、私はそれをやっている方法です:

$:#diffを-Naurbw。 ../other-folder> file.patch

しかし、おそらくによるファイルサイズに、パッチが作成され、エラー与えて取得されていません。

デフ:メモリが使い果たさを

私はスペースを作ってみました15 GBを超えても問題は解決しません。

誰かが私が使用すべき旗で私を助けてくれますか?

+2

私は "diff large files linux"を探して、他の多くのリンクの[this](http://unix.stackexchange.com/questions/2150/diffing-two-big-text-files)を見つけました。少なくともいくつかの研究を行ったふりをして...これはまた話題にはなりません。 – Thomas

+1

はい、私はそれを試してみて、いくつかのパラメータの変更を発見し、 "メモリが枯渇しました"というエラーが "--speed-large-files"フラグを使用していても残っています。 – pritam

+1

複数のステップでそれらを比較するのはどうですか?例えばdiffをそのように分割することができないかどうかはわかりませんが(つまり、パッチを適用するために余分なロジックが必要になるかもしれませんが)、フォルダを1GBブロック、diff、分割して連結します。最初に7GBのフォルダを比較するのはなぜですか?確かにその中のいくつかのファイル/フォルダだけが変更されていますか? – Thomas

答えて

12

最近、2つの大きなファイル(それぞれ5Gbを超えるファイル)を比較する必要があるときに、私はこれを見つけました。

異なるオプションで 'diff'を使用しようとしましたが、--speed-large-filesでも効果がありませんでした。 xdeltaを使用するか、this suggestionのようにファイルを並べ替えるなど、小さなファイルに分割するなどの他の方法も役に立ちませんでした。私は非常に強力なVM(> 72Gb RAM)を手に入れましたが、それでもこのmemory exhaustedエラーが発生しました。

私は最終的にsysctl.confsudo vim /etc/sysctl.conf)に次のパラメータを追加することで動作するようになった:パラメータが実際にあなたが忘れてはいけない

sudo sysctl -p 

を実行することができます適用されていることを確認するために

vm.overcommit_memory=1 

完了したらこのパラメータを元に戻してください!

+1

編集ありがとう、私はnewbyでstackoverflowです。 さらに、このパラメータについて説明します。 vm.overcommit_memoryには3つの値(0,1,2)があり、カーネル仮想メモリアカウンティングモードが設定されています。 「男5 procの」 0:ヒューリスティックオーバーコミット(これがデフォルトです) 1:常にチェックしたことがない、オーバーコミット 2:常に私は、事実について本当に少し悲しい – Igor

+1

をオーバーコミットしたことがない、チェックなど興味深いunstandardこと私が見つけて共有してくれたanwserは、私のために+2の代理人しか作っていませんでした。私はpythonで遊んでいたのですが、もっと退屈なものでした。 – Igor

+1

私は同意して面白くて、標準ではなく、私のために働きました! 2つの70GBファイルを比較すると、317TBの仮想メモリと150TBの常駐RAM ... 250GBのRAMを使用しても以前は実行できなかった比較が完了しました。非常に賢い! –

関連する問題