rsync は、単一の小さなファイルを同期しておくのに適したオプションですか?

rsync は、単一の小さなファイルを同期しておくのに適したオプションですか?

低速で不安定なダイヤルアップ モデム接続を介して、比較的小さな単一のファイルを最新の状態に保つ必要があります。

このファイルは、最初は 15K で始まり、2 時間後には 500K になる可能性がある XML です。

これは単方向のレプリケーションです。現在のソリューションでは、ファイル全体を 1 分ごとにダウンロードし続けます。これまでのところ、ブロードバンド接続では問題なく動作しますが、今後はダイヤルアップしか利用できない場所で使用する必要があります。ダウンロードが遅いため、「リアルタイム データ」という幻想は失われます。

rsync を使用すれば、独自の (そして非効率的な)「デルタのみ」プロトコルを開発せずに済むと考えました。この特定のケースで rsync が実際にメリットをもたらすかどうかは疑問です。

そこで質問です。rsync プロトコルは 15K から 500K の単一ファイルに適しているでしょうか?

答え1

この場合はそうではありません。次のようなものを使用する方が良いでしょう。差分XMLファイル間の差分のみを更新として送信し、宛先マシンにパッチを適用します。

答え2

まあ、私は rsync を使ってそれを実行しましたが、うまく動作したと言わざるを得ません。

転送されるデータ量が非常に少ないため、狭いダイヤルアップ接続では更新頻度を 20 秒に短縮できました (ブロードバンドで使用していた以前の頻度の 3 分の 1 です)。

800kb の XML を更新するには、5kb のダウンロードと 800 バイトのアップロードが必要です。

更新する変更がない場合のバージョンの確認には、ダウンロードが 500 バイト、アップロードが 100 バイト未満かかります。(通常のチャット セッションで入力すると、より多くのバイトが転送されます。)

他の diff ソリューションよりもはるかに優れており、これに関して何もプログラムする必要はありませんでした。(以前は、rsync を起動するためのプッシュ メカニズムを追加することを考えていましたが、まだ実際には必要ありません。20 秒は許容範囲であり、ポーリングは非常に軽量です。)

すごいですね、rsync!

PS: Git は試していませんが、おそらくこれも良い解決策だったでしょう。

関連情報