rsyncを使用してアーカイブの変更をコピーできますか?

rsyncを使用してアーカイブの変更をコピーできますか?

tar.gzWebホスティングをアーカイブに圧縮してというバックアップを作成するとしますbackup.tar.gz

1ヶ月後にこのプロセスを繰り返したいです。私は積極的にサイトを開発しており、最後のバックアップ以降にいくつかの変更が発生したとしましょう。

私(または私のクローンの仕事)は1ヶ月後にこのプロセスを繰り返します書くbackup.tar.gz更新されたバックアップアーカイブを含むソースファイル。

rsyncこれを使用してリモートバックアップ先(SFTP経由など)と同期する場合は、backup.tar.gz2つのファイル間のデルタのみを同期できますか?

ファイルを上書きすると新しいタイムスタンプが生成され、動作に影響しますか?

それとも、どのような場合でも、rsyncがアーカイブを表示し、ほとんどのアーカイブがターゲットに保存されていることを認識し、変更のみを同期できますか?

ありがとうございます!

ベストアンサー1

圧縮(gzipped)ファイルは、ソースに1バイトを追加することで全体に変換されます。rsync非常に小さな変更でもファイル全体を転送する必要があるため、効率的なコピーにはまったく適していません。

gzip幸いなことに、効率的な転送のためにいくつかの圧縮実装を調整できますrsync

--rsyncable[...]このオプションを使用すると、rsyncは変更されたファイルと変更された領域のアーカイブ構造を更新するために必要な少量のメタデータのみを転送できます。

このフラグに直接アクセスできないため、直接圧縮するtar代わりにパイプを使用する必要があります。tar

tar cf - files and folders | gzip --rsyncable > output.tgz

GZIP(すべての呼び出しに対してこの値を設定するために使用できる環境変数がありますが、ドキュメントには廃止されたとマークされているため、むしろgzip使用しないことをお勧めします。)

おすすめ記事