web-dev-qa-db-ja.com

rsync削除オプションの違いは何ですか?

私は rsyncのmanページdeleteオプションがたくさんあるのを見ますが、それらの違いを本当に理解していません。これらのオプションの違いは何ですか?

 --del                   an alias for --delete-during
 --delete                delete extraneous files from dest dirs
 --delete-before         receiver deletes before transfer (default)
 --delete-during         receiver deletes during xfer, not before
 --delete-delay          find deletions during, delete after
 --delete-after          receiver deletes after transfer, not before
 --delete-excluded       also delete excluded files from dest dirs
111
Skilldrick
  • --del/--delete_during:コピーされると、宛先ディレクトリからファイルを削除します(--delete-beforeと比較してメモリを節約します:--delete-beforeは、削除可能ファイルを探すために個別のスキャンを行います)

  • --delete:コピー元ディレクトリに存在しない場合、コピー先ディレクトリのファイルを削除します。

  • --delete-before:コピー元ディレクトリから同じ名前のファイルをコピーする前に、コピー先ディレクトリのファイルを削除します

  • --delete-during:file-with-same-nameをソースディレクトリからコピーしている間に、宛先ディレクトリのファイルを削除します

  • --delete-delay:転送中に削除をマークしますが、転送が完了するまで待ちます

  • --delete-after:レシーバーは転送前ではなく転送後に削除します... rsyncの他の部分が余分なファイルを別の場所に移動した場合は、--delete-delayが転送中に削除するものを決定するので、--delete-delayの代わりにこれが必要になりますが、--delete-afterはチェックしますすべてが終了した後に削除するファイルのディレクトリ。

  • --delete-excluded:転送元ディレクトリからの転送から明示的に除外されているファイルを転送先ディレクトリから削除します。

Rsyncのポイントはコピーではなく、アーカイブです。これは重要な違いです。削除/変更されたファイルの処理は重要であり、多くの場合微妙です。

特に--deleteフラグは、何度もめちゃくちゃにされたものです。多くの人がrsyncを使用してファイルを優先度の低いストレージに移動します。この場合、移動先のファイルは移動先のディレクトリにまだ存在している必要があります。それは削除ではありません:--deleteは、ソースディレクトリからファイルを削除するときに、宛先ディレクトリからも削除されることを確認します。そのため、宛先はジャンクで一杯になりません。新しいドライブを入れてバックアップし、夜間のrsyncスクリプトをオフにしないでください。スクリプトは、ソースディレクトリが空になったことを確認し、宛先ディレクトリ内のすべてのファイルを削除したため、一致します。

他のオプションのほとんどは、スペースまたはパフォーマンスに関連しています。ファイルを削除することは、何かを行う前に転送が成功したことを確認したい場合に重要ですが、デバイスが小さすぎてすべての情報の2つのコピーを処理できない場合は、移動中に削除する必要があります。複数のプラットフォームにまたがる長い歴史があるため、少し変わっています。特定の動作に慣れている人が混乱しないように、いくつかのオプションが追加されています。

112
Satanicpuppy

もう1つ言及しておく価値があるのは、ソースディレクトリが/*で終わっている場合、rsyncはthosefilesだけを考慮し、ディレクトリ自体は考慮しないということです。目的地で削除したい)。

上記の削除オプションを指定していても、rsyncが削除していないように見える場合は、ディレクトリ自体を指しているときに誤ってファイルをグロブしてリストを表示していないことを確認してください。

1

進行中のことが2つあります。

  1. 誰が削除しますか
  2. それが起こるとき

送信者または受信者のどちらかに削除を指示することができます(これが重要な理由はわかりません)。したがって、一方のコンピュータからのrsyncがもう一方のrsyncサーバに接続すると、誰が事実上deleteコマンドを発行しているかがわかります。

それが起こるときはかなり簡単です...前にすべてのファイルが削除されることを意味しますそしてTHEN rsyncはファイルを上書きします。それがファイルのリストを通過するとき、それはそれがそれらに来るときそれらを削除し、そしてその後すべてのファイルが転送されるまで待ってからリモート側を削除することを意味します。これは、転送が中断されたときにだけ重要です。

1
Michael Pryor