12

2 つの大きなサイズのフォルダー (~7GB) を使用してパッチを作成しようとしています。

これが私がやっている方法です:

$ diff -Naurbw . ../other-folder > file.patch

しかし、おそらくファイル サイズが原因で、パッチが作成されず、エラーが発生します。

diff: memory exhausted

スペースを 15 GB 以上にしようとしましたが、それでも問題は解決しません。誰かが私が使用すべきフラグを手伝ってくれませんか?

4

3 に答える 3

18

最近、2 つの大きなファイル (それぞれ 5Gb 以上) を比較する必要があったときに、これにも遭遇しました。

さまざまなオプションで「diff」を使用しようとしました--speed-large-filesが、効果がありませんでした。ファイルを小さなものに分割する、この提案xdeltaに従ってファイルを使用またはソートするなどの他の方法も役に立ちませんでした。非常に強力な VM (> 72Gb RAM) を手に入れましたが、それでもこのエラーが発生しました。memory exhausted

sysctl.conf( sudo vim /etc/sysctl.conf)に次のパラメーターを追加して、最終的に作業を開始しました。

vm.overcommit_memory=1

vm.overcommit_memory3 つの値 (0、1、2) があり、カーネル仮想メモリのアカウンティング モードを設定します。proc(5) の man ページから:

0: ヒューリスティック オーバーコミット (これがデフォルト)
1: 常にオーバーコミットし、チェックしない
2: 常にチェックし、オーバーコミットしない

パラメータが実際に適用されていることを確認するには、実行できます

sudo sysctl -p

終了したら、このパラメーターを元に戻すことを忘れないでください。

于 2015-02-16T10:19:31.997 に答える