Linuxサーバーのサービスはフルバックアップのみを実行でき、各バックアップは.tarアーカイブ(圧縮されていません)です。アーカイブの内容のほとんどは日々変わりません。各.tarファイルサイズは約3GBです(毎日ゆっくりと増えます)。
バックアップをアーカイブしている別のサーバーに転送したいです。転送はインターネット経由で行われます。
要件は、バックアップが変更されていないことです(結果は、再度md5の合計がサーバーの元のファイルと同じ.tarファイルのリストです)。
私は現在rsyncを使ってファイルを転送していますが、うまくいきますが、すべてのファイルはフルサイズで転送されます。私が知る限り、rsyncは転送中に一種の重複排除を実行しますが、ファイルごとのレベルでのみ実行されます(正しいですか?)。
同じファイルチャンク(ある種の重複)を再送信せずにSSH接続を介して同様のファイルを転送する方法はありますか?
- サーバーへの書き込みアクセスは必要ありません(tarファイルを解凍する必要はありません)。
- 接続損失を許可します(中断時に一時ファイルを残さず、正しく転送されていないファイルを検出します)。
- 接続が切断された後に転送を再開する機能(接続が中断された場合はすべてのファイルを再送信しない)
- rsyncを含む標準のUnixツールチェーンに加えて、サーバーに追加のツールは必要ありません。
- 転送のためにクライアントが開始したSSH接続を引き続き使用しています。
ベストアンサー1
あなたができることの1つは、rsyncを起動する前に(受信側で)最後のバックアップファイルを新しい名前にコピーすることです。それはあなたが持っているものとあなたが持っているべきものの間の違いだけを伝えます。
これを行う場合は、rsync -u
コピーが新しいソースファイルより古いかどうかを確認してください(更新のみ、タイムスタンプに基づいて)。