巨大ファイルの比較(diff memory exhausted)への処方箋

ファイルサーバー運用とかやってるとディレクトリツリーのダンプ(dir /B /S)とかの比較をしたい事があって、これが数千万行のギガバイトクラスになると非常に厄介。

Windows用のGNU diffはもちろん動かないし、rdiffはよくわからんし…となった時の解決策。

必要なもの

  1. qemu
  2. KNOPPIXx86_64


ここでミソなのが64bitのLinuxを使うという点。diffのソースを追っかけると、どうもxallocの中のmallocでメモリ確保に失敗すると『diff memory exhausted』というエラーをはくようで、巨大ファイルのdiffでは1プロセスあたりが使用できるメモリ要領の制限にひっかかっるというところが原因になっている模様。なので64bit。


あと、qemuも大事。手元にあるOSが32bitだったらVMwareVirtualPCもアウト。32bitの上で64bitがエミュレートできるqemuが必要。

以下詳細は割愛。覚え書き程度に。