5

ファイル バックアップのバージョン管理または最適化を行う場合、1 つのアイデアは、変更されたデルタまたはデータのみを使用することです。

これは最初は単純なアイデアのように思えますが、実際には、変更されていないデータがどこで終わり、新しいデータがどこから始まるかを判断するのは難しい作業です。

既にこのようなことを行っている既存のフレームワークや、効率的なファイル比較アルゴリズムはありますか?

4

5 に答える 5

3

独自に作成する代わりに、オープン ソースのバージョン管理システム (例: Subversion ) を活用することを検討してください。そうすれば、単なるデルタ バージョニング アルゴリズム以上のものを得ることができます。

于 2011-02-13T06:21:36.343 に答える
1

差分ベースのストレージ スキームについて説明しているようです。ほとんどのソース コード管理システムでは、このようなシステムを使用してストレージ要件を最小限に抑えています。*nix "diff" コマンドは、独自に実装するために必要なデータを生成できます。

于 2011-02-13T06:09:35.397 に答える
1

私の意見では、バイナリ ファイルには Bsdiff ツールが最適です。接尾辞の並べ替え (Larsson と定兼の qsufsort) を使用し、実行可能ファイルがどのように変化するかを利用します。Bsdiff は Colin Percival によって C++ で書かれました。Bsdiff によって作成される差分ファイルは、通常、Xdelta によって作成されるファイルよりも小さくなります。

Bsdiff が bzip2 圧縮アルゴリズムを使用していることも注目に値します。Bsdiff によって作成されたバイナリ パッチは、他の圧縮アルゴリズム (WinRAR アーカイバのものなど) を使用してさらに圧縮できる場合があります。

Bsdiff のドキュメントを見つけて Bsdiff を無料でダウンロードできるサイトは次のとおりです: http://www.daemonology.net/bsdiff/

于 2012-09-04T01:05:44.493 に答える
1

2 つのプレーン テキスト ファイル間の差分を計算できる Java ライブラリを次に示します。

http://code.google.com/p/google-diff-match-patch/

ただし、バイナリ差分用のライブラリは知りません。「Javaバイナリ差分」をグーグルで検索してみてください;-)

于 2011-02-13T09:16:30.583 に答える