2012-02-13 14 views
1

私のバックアップツールでは、まだバイナリファイルを処理できる良いデルタエンコーディングアルゴリズムを探しています。問題は、私は非常に巨大なバイナリファイルを持っています。 600MB以上。したがって、32ビットアプリケーションでは最大10ギガバイトのRAMを割り当てることはかなり難しいです。正直なところ、それは不可能です。大きなファイルのデルタエンコーディング - 良好な実装が可能ですか?

私はcsharpのbsdiffの実装を見てhereを見ました。かなりクールですが、ファイル全体をバイト配列にロードします。だから、大規模なファイルを扱うことができる実装は誰もいますか?つまり、本当に大きなファイルですか?

+2

[rsyncアルゴリズム](http://en.wikipedia.org/wiki/Rsync#Algorithm)をご覧ください。 – dtb

答えて

2

Windows環境で実行していると仮定すると、Remote Differential Compressionをご覧ください。これはrsyncの改良点として開発されたもので、サーバとクライアントが同じバージョンのファイルを持ち、そのうちの1つが「マスタ」であり、それらを一緒に同期させたいという前提があります。

COMライブラリのC#ラッパーはhereです。

+0

FYI、[コアRDCアルゴリズムを純粋なC#で実装](https://github.com/jklemmack/rdc.net)。それはドロップイン互換ではありませんが、半ユニークシグネチャのチャンクと報告の出発点です。これは、デルタ符号化の基礎を形成する。 – jklemmack

関連する問題