ネットワーク経由でファイルを同期するプログラムがいくつかあることは知っています。それらのどれも、私が考えていたことをしません。私が達成したいことを説明させてください...
私のネットワークでは、複数のコンピュータが同じファイルを共有しています。たとえば、quickbooks ファイルは複数のコンピューターからアクセスされ、大きなファイルです。Outlook large からの pst ファイルもあります。毎晩、変更されたファイルのバックアップをネットワーク経由で作成します。わずかな変更があった場合、1 GB のファイル全体をコピーするのは適切ではないと思います。そのため、ファイルの一部を比較するアルゴリズムを考案したいと考えています。
たとえば、Outlook の pst ファイルがバイトで構成されているとします。
1, 2, 3, 4, 5, 6, 7, 8, 9
メールを受信すると、バイトは次のようになります。
1, 2, 3, 4, 5, 6, 7, 8, 9, 10 for example
ファイル全体を送信する代わりに、バイト 10 だけを送信する方が簡単です。
実際には、ファイルには数千バイトあるため、ファイルのすべてのメガバイトのチェックサムを実行するため、テーブルは次のようになります。
aaa1, aaa2, aaa3, abf8, etc...
メールを受信したときに、pst ファイルに次のようなテーブルがある場合:
aaa1, aaa2, aaa3, 7a8b, etc ... then I know that the first 3 megabits are the same and I should send just one megabite instead of the entire file...
ファイルの末尾にコンテンツが追加された場合、このアルゴリズムはうまく機能すると思いますが、実際にはファイルの先頭でバイトが変更される可能性があり、私のアルゴリズムは機能しません。たとえば、ファイルの先頭に 1 バイトを追加すると、すべての 16 進コードが変更されます...
アルゴリズムをより効率的にするにはどうすればよいですか? ファイル全体ではなく、ファイルの一部を送っていただけると助かります