With RSync, I see --delete-during deletes destination files during transfer.

What does "during" mean? Does "during" really mean during the overall transfer of files, but after each individual file?

But isn't "after each individual file" what --delete-delay does? ..wait until transfer of each individual file is complete but before the entire set of file transfers is complete? Or does delete-delay mean after transfer of ALL files is complete? ..but that can't be because that's what --delete-after does.

Summary: please help me clarify what people/docs mean when they say "after transfer" for each of the above 3 options. Is that after transferring THE file -- each individual file -- or does that mean after transferring ALL files?


  • 1
    I think that the long description of these options in the manual are quite clear...
    – Kusalananda
    Jan 16, 2017 at 16:28
  • Yes... clarity is definitely in the eye of the beholder. Maybe my engineering background is making me be too talmudic. Let me read and ponder for a moment...
    – Brian
    Jan 16, 2017 at 19:18
  • See also: superuser.com/a/1513723/546542
    – Arnie97
    Mar 17, 2022 at 14:00

1 Answer 1


From the Rsync 3.1.2 manual:


Request that the file-deletions on the receiving side be done incrementally as the transfer happens. The per-directory delete scan is done right before each directory is checked for updates, so it behaves like a more efficient --delete-before, including doing the deletions prior to any per-directory filter files being updated. [...] and is more efficient than using --delete-after (but can behave differently, since --delete-after computes the deletions in a separate pass after all updates are done).


Request that the file-deletions on the receiving side be computed during the transfer (like --delete-during), and then removed after the transfer completes. [...]


  • "during" will compute and do deletions prior to entering each directory (during transfer).
  • "delay" will compute deletions prior to entering each directory (during transfer), but will do the deletes after transfer.
  • "after" will compute and do deletions after transfer.

And for completion:

  • "before" will compute and do deletions before transfer.

For clarity: before/during/after "transfer" means before/during/after the transfer of all data updates between source and target.

  • 1
    So.. "during" is really a "before each directory"
    – Brian
    Jan 16, 2017 at 19:16
  • @Brian Yes, during the phase of operation wherein data updates are being made.
    – Kusalananda
    Jan 16, 2017 at 19:21
  • [Ignore prior comment. The web interface cut off my response.] So.. "during" is really a "before each directory". Got that. But again, in your answer it says only "delay deletes after transfer" for both "delay" and "after", so they appear to ~delete~ the same. What your answer made clear is that the difference is in computing and queuing up deletions, so I need to think about that. I wonder why they're not called --compute-deletes-delay and --compute-deletes-after.
    – Brian
    Jan 16, 2017 at 19:23
  • I'm imagining a table of options, choosing when compute is done and when delete is done. One axes is "when" and the other is "what": before any file, before entering directory, after processing directory, and after all transfers. 4 options x 2 (compute and delete) should give 8 command line options. I think only four have been implemented: "before" computes and deletes before any transfers, "during" computes and deletes before each directory, "delay" computes before and deletes after each directory, "after" computes and deletes after all other transfers in the command line.
    – Brian
    Jan 16, 2017 at 19:31
  • 1
    @Brian Ah, I now see where you are confused. Yes, --delete-delay and --delete-after both does the actual deletions after, but --delete-after finds what to delete is a separate pass after the update transfer. The reason, I suppose, why there's no --compute-deletes-during/after is that 1) it's too long to type 2) would be potentially even more confusing to use with --delete-after and --delete-before (--delete-before wouldn't even be valid).
    – Kusalananda
    Jan 16, 2017 at 19:31

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .