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


118

私は上を参照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

2
--delete-beforeとして記述されているのはなぜ(default)ですか?(default)意味がわかりません。
マルコマルサラ

1
manページでデフォルトとして指定されなくなりましたrsync version 3.1.2 protocol version 31。しかし、引用されたテキストを持つバージョンの私の推測では、あなただけ使用した場合ということである--deleteのではなく--delete-WHEN、あなたが指定したかのように、それはだ--delete-WHEN場所WHENにデフォルトをbefore
トム・ヘイル

回答:


114
  • --del/--delete_during:彼らはコピーされる先のディレクトリからファイルを削除します(と比べてメモリを節約します--delete-before--delete-beforedeleteablesを探すために別々のスキャンを行い)

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

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

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

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

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

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

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

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

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


3
--deleteと--delete-beforeは同じですか?--deleteがファイルを削除するとき、man rsyncは言いません。
ppr

@ppr:システムに依存します。特定のオプションが非常に多くある理由は、Solarisで削除!= HP-UXで削除!= AIXで削除!= Linuxで削除だからです。
悪魔のような子犬

ディレクトリ全体を再delete-after同期する場合、同期の間に各ファイルを削除しますか、またはディレクトリ全体がミラーリングされた後にのみ削除されますか?私delete-afterは自分のニーズには十分だと思っていましたが、ドライブの1つをバックアップするときに、デバイスにスペースが残っていません。
シュリダールSarnobat

1
@ Sridhar-Sarnobat:どちらか。移動しようとするすべてを移動し、完了すると削除を開始します。すべてを移動する前に削除する場合は、
-delete

2
いくらかの経験の後、私はそれdelete-duringが常にno space left on device(Linux上で)防げるとは限りません。それdelete-beforeを回避する唯一の保証された方法です(ほぼ満杯のドライブをミラーリングする場合や、宛先ドライブもほぼ満杯です)。
スリダールサルノバト

1

次の2つのことがあります。

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

送信者または受信者に削除を指示することができます(これがなぜ重要なのかわかりません)。そのため、1台のコンピューターからrsyncが反対側のrsyncサーバーに接続するとき、これはだれが削除コマンドを効果的に発行しているかを決定します。

それが起こるときは非常に簡単です...前にすべてのファイルが削除され、その後rsyncがファイルをコピーすることを意味します。手段の間にファイルのリストを調べて、それが来るとそれらを削除し、その後、すべてのファイルが転送されるまで待ってからリモート側を削除します。これは、転送が中断された場合にのみ重要です。


これらのオプションはいずれも、送信者側からの削除に関連するものではないと確信しています。それらのすべて(AFAIK)は、受信者側からの削除に関連しています。また、「前はすべてのファイルが削除され、その後rsyncがファイルにコピーすることを意味します」と言います。すべてのファイル--delete-beforeではなく、削除する必要があるファイルのみを削除することを期待しています!しかし、私はそれがだと思う可能性 rsyncはすべて、その後(おそらく変わらない)「新」データの上に転送...削除していること
Quuxplusone

1
ああ、「送信者側から削除」 rsyncでサポートされていますが、そのオプションの名前は--remove-source-filesです。
-Quuxplusone

1

言及する価値があるもう1つの点は、ソースディレクトリがで終わる場合、/*rsyncはディレクトリ自体ではなくそれらのファイルのみを考慮することです(したがって、宛先で削除したいファイルがないこと)。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.