大容量ファイルの差分を取れるdiffコマンドを探しています。


http://q.hatena.ne.jp/1173253640

とほぼ同様ですが、cygwinではなく FreeBSD環境下で探しております。

また、それによって生成される差分データがpatchコマンド可能(若しくは大容量diff専用patchプログラム)なものを探しております。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/08/06 10:37:30
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:znz No.1

回答回数193ベストアンサー獲得回数25

ポイント70pt

差分データがバイナリでいいのなら、devel/xdeltaはどうでしょうか?

Linux上で試したところ470M程度のisoファイルの差分は問題なく生成できたようです。

id:likk

ユーザ権限&ユーザ領域にて

xdelta-1.1.4 のコンパイルを試みましたが上手くいかず…

xdelta3のバイナリデータが使えそうだが、使い方微妙に分からず…

色々試してみます

2007/08/02 22:14:26
id:minkpa No.2

回答回数4178ベストアンサー獲得回数55

id:likk

大変よく出来たボットですね。

回答か質問に即してないのでポイントは与えません。

2007/08/02 22:23:31

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 yosuke_ss 260 192 2 2007-08-02 03:34:39
  • id:Bookmarker
    FreeBSD 6.2 付属の diff コマンドは、
    GNU diffutils version 2.7
    ですが、同様のエラーになるのでしょうか?
  • id:likk
    >Bookmarkerさん
    OS,diffのバージョン同一ですが、
    70Mbyte強の2ファイル(計約150M)で
    diff: memory exhausted
    が表示されました。
  • id:likk
    環境追加というか、重要なこと忘れてました。orz
    レンタルサーバ環境
    ユーザ権限
    一応gcc可
  • id:Bookmarker
    私のマシンでは、diff コマンドで 100M 超のファイル同士を比較できました。

    レンタルサーバーということなので、利用可能なメモリーのサイズ等が制限されているのではないでしょうか?

    私のマシンの limits コマンドの出力結果は、下記の通りです。

    Resource limits (current):
    cputime infinity secs
    filesize infinity kB
    datasize 524288 kB
    stacksize 65536 kB
    coredumpsize-cur 0 kB
    memoryuse infinity kB
    memorylocked infinity kB
    maxprocesses 1328
    openfiles 2656
    sbsize infinity bytes
    vmemoryuse infinity kB

    # メッセージ"memory exhausted"は、malloc に失敗した場合に表示されるメッセージのようです。
  • id:likk
    レンタルサーバ環境のlimitの出力結果です

    $limit -h
    cputime 10:00
    filesize unlimited
    datasize 524288 kbytes
    stacksize 65536 kbytes
    coredumpsize 0 kbytes
    memoryuse 102400 kbytes
    vmemoryuse 102400 kbytes
    descriptors 100
    memorylocked unlimited
    maxproc 25
    sbsize unlimited

    データgz圧縮後(8M*2)で
    bsdiffや、zdiffでも同様のエラーになりました。
    メモリ制限のようです。
    (他の自作プログラムでも時々メモリサイズオーバーになりますし……)

    環境が原因だということが判明しました。
    有難う御座いました。

    質問Close後にポイントを送付致します。
  • id:Bookmarker
    > vmemoryuse 102400 kbytes

    VM 空間全体が 100MB って…桁が違ってませんか?
    一般的なレンタルサーバーの実状は知りませんが、この制限はかなりきついのではないでしょうか。
    (diff コマンドに限らず)
  • id:likk
    出力結果を加工せずそのままコピペしたので、
    桁違いということは無いと思います。

    他のレンタルサーバと比較したことはありませんが、
    個人使用のWebサイト,一般的なCGI利用に関しては特に不自由を感じたことは無いです。

    (メモリ大量に食うのはレンタルサーバでやるな、ってことでしょうかね…)

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません