This is equivalent to -rlptgoD. It is a quick way of saying you want recursion and want to
preserve almost everything (with -H being a notable omission). The only exception to the above
equivalence is when --files-from is specified, in which case -r is not implied.
Note that -a does not preserve hardlinks, because finding multiply-linked files is expensive. You
must separately specify -H.
This makes rsync perform a trial run that doesn’t make any changes (and produces mostly the same
output as a real run). It is most commonly used in combination with the -v, --verbose and/or -i,
--itemize-changes options to see what an rsync command is going to do before one actually runs it.
The output of --itemize-changes is supposed to be exactly the same on a dry run and a subsequent
real run (barring intentional trickery and system call failures); if it isn’t, that’s a bug.
Other output should be mostly unchanged, but may differ in some areas. Notably, a dry run does
not send the actual data for file transfers, so --progress has no effect, the "bytes sent", "bytes
received", "literal data", and "matched data" statistics are too small, and the "speedup" value is
equivalent to a run where no file transfers were needed.