バックアップ ツールを開発していますが、リモート バックアップを行う最も効率的な方法がわかりません。小さな変更があるたびにファイル全体を送信したくないので、増分バックアップが解決策だと思います。これで問題はありませんが、1 つのファイルを複数の部分に分割するにはどうすればよいかという問題に悩まされています。
問題は、単純なテキスト ファイルがあり、1 つのチャンクが 1 行であるとしましょう。
First line
Second line
Third line
Fourth line
今、私は4つのチャンクを持っています。2行目を「THE 2行目」と言うように更新すると、2番目のチャンクをバックアップするだけで済みます。
しかし、次のようなことが起こったらどうでしょうか。
First line
First and half line
Second line
Third line
Fourth line
「前半行」を追加したので、すべての行が別の場所になりました。したがって、各行が 1 つのチャンクである場合、内容が同じであっても、最初の行以降のすべてのチャンクが変更されているように見えます。
これに対する簡単な解決策はありますか?最初に、各チャンクのハッシュを実行してから、正しいチャンクの順序を示す「カタログ」を作成できると考えました。このようにして、チャンクがすでにハッシュに存在する場合、簡単に一致させることができます。しかし、ハッシュ テーブル ソリューションは、チャンクを予測して修正できるファイル以外では機能しないことに気付きました。たとえば、バイナリ ファイルの場合、固定バイト サイズのチャンクにかなり制限されているため、最初に追加されたデータがさらに多く、たとえば 100k チャンクに切り刻み始めた場合、後のチャンクでは以前とは異なるデータが取得されます。
解決策はありますか?