デフォルトではrsyncは宛先側のファイルを一切削除しません。rsync にファイルを全く削除させないようにするには、少なくとも 1 つの削除オプションを使用する必要があります。
ファイルがいつ削除されるかを気にしない場合は、--delete を使用して、その選択は rsync に任せてください。--delete を他の削除オプションと組み合わせることもできますが(これは競合しません)、他のすべての削除オプションはすでに --delete を暗示しているので、その必要はありません。
--delete-before は以下のように動作します。rsync はソースにあるファイルとデスティネーションにあるファイルを調べ、デスティネーションにあるがソースにはないファイルをすべて削除してから実際の同期を開始します。この順序は、転送先のストレージ容量が少ない場合、新しいファイルの転送を開始する前に転送先のディスク容量を解放することができるので便利です。欠点としては、rsync は処理を実行するためにより多くのメモリを必要とし、処理全体が 2 段階の処理になるため、処理速度が遅くなることが挙げられる。
--delete-during は以下のように動作します。rsyncはすぐにファイルの同期を開始し、宛先にしか存在しないファイルを見つけたら削除します。この方法では速度の低下はなく、追加のメモリも必要ありません。欠点は、削除されたファイルが削除される前に、最初に多くの新しいファイルがコピーされてしまうことがあることです。
--delete-after は以下のように動作します。最初にすべてのファイルを同期化してから、同期化フェーズの前に --delete-before が実行するのと同じ操作を実行します。これは最も一般的なケースでは最悪の選択であり、最も多くのメモリを必要とし、転送先で最も多くのディスク容量を必要とし、2段階の処理になるため処理速度が遅くなる。このオプションは主に"merge files“を使用している場合に存在します(マージファイルが何であるか、どのように動作するかはこの答えの範囲を超えています)。これらのファイルには、削除時に除外するファイルのルールが含まれている可能性があるので、削除フェーズでその内容を考慮する場合は、新しいマージファイルを削除フェーズの前にコピーしなければなりません。それが要求されない限り、--delete-afterには何の利点もありません。
--delete-delay はかなり新しいオプションです(rsync 2.6.9 では利用できませんが、例えば macOS 10.15 ではデフォルトのままです)。これは--delete-duringと同じように動作しますが、ファイルをすぐに削除するのではなく、同期が完了した後にファイルを削除することを除いては、--delete-duringと--delete-afterのハイブリッドです。メリットは --delete-after よりも高速であることですが、デメリットは同期中により多くのメモリを必要とすることです。
--delete-excluded は、rsync に、ソースに存在しないファイルを削除するだけでなく、同期から除外されたデスティネーション(--exclude または --exclude-from)にあるファイルを、これらのファイルがソースに実際に存在するかどうかに関わらず削除するように指示します。