Get list of transferred files from rsync?
Solution 1:
Use the --out-format
option
According to the man page:
Specifying the
--out-format
option will mention each file, dir, etc. that gets updated in a significant way (a transferred file, a recreated symlink/device, or a directory).
If you only need the actual filenames (--out-format="%n"
) your dry run command might look like:
rsync -rzan --out-format="%n" --ignore-times --checksum /tmp/app_export/ [email protected]:/var/www/html/app/
When rsync is called with -v
, it internally uses this option with a default format of "%n%L"
, which tells you just the name of the file and, if item the is a link, where it points.
But this also includes a short summary at the beginning and the end of the sync process.
To get rid of that summary use the --out-format
option directly.
Btw. -i
also internally uses --out-format
, but with a format of "%i %n%L"
.
Solution 2:
If there's an rsync option to do exactly what you're asking, I didn't find it in the manpage either. :-)
That said, I don't see the problem with grepping the output of rsync -i
to parse out exactly what you need. That feels nice and Unixy to me.
One nit-picky quibble with your rsync command: the -r
is redundant, as it is implied by -a
.
Solution 3:
Beginning with rsync v3.1.0, released in 2013, there is the --info
flag which allows fine-grained control over the output.
--info=FLAGS
This option lets you have fine-grained control over the information output you want to see. An individual flag name may be followed
by a level number, with 0 meaning to silence that output, 1 being the default output level, and higher numbers increasing the output
of that flag (for those that support higher levels). Use --info=help to see all the available flag names, what they output, and
what flag names are added for each increase in the verbose level. Some examples:
rsync -a --info=progress2 src/ dest/
rsync -avv --info=stats2,misc1,flist0 src/ dest/
Note that --info=name’s output is affected by the --out-format and --itemize-changes (-i) options. See those options for more
information on what is output and when.
This option was added to 3.1.0, so an older rsync on the server side might reject your attempts at fine-grained control (if one or
more flags needed to be send to the server and the server was too old to understand them). See also the "max verbosity" caveat
above when dealing with a daemon.
The available --info
flags are:
Use OPT or OPT1 for level 1 output, OPT2 for level 2, etc.; OPT0 silences.
BACKUP Mention files backed up
COPY Mention files copied locally on the receiving side
DEL Mention deletions on the receiving side
FLIST Mention file-list receiving/sending (levels 1-2)
MISC Mention miscellaneous information (levels 1-2)
MOUNT Mention mounts that were found or skipped
NAME Mention 1) updated file/dir names, 2) unchanged names
PROGRESS Mention 1) per-file progress or 2) total transfer progress
REMOVE Mention files removed on the sending side
SKIP Mention files that are skipped due to options used
STATS Mention statistics at end of run (levels 1-3)
SYMSAFE Mention symlinks that are unsafe
ALL Set all --info options (e.g. all4)
NONE Silence all --info options (same as all0)
HELP Output this help message
Options added for each increase in verbose level:
1) COPY,DEL,FLIST,MISC,NAME,STATS,SYMSAFE
2) BACKUP,MISC2,MOUNT,NAME2,REMOVE,SKIP