Monitoring Rsync Progress

paulmdavies picture paulmdavies · Aug 23, 2011 · Viewed 13.6k times · Source

I'm trying to write a Python script which will monitor an rsync transfer, and provide a (rough) estimate of percentage progress. For my first attempt, I looked at an rsync --progress command and saw that it prints messages such as:

1614 100%    1.54MB/s    0:00:00 (xfer#5, to-check=4/10)

I wrote a parser for such messages, and used the to-check part to produce a percentage progress, here, this would be 60% complete.

However, there are two flaws in this:

  • In large transfers, the "numerator" of the to-check fraction doesn't seem to monotonically decrease, so the percentage completeness can jump backwards.
  • Such a message is not printed for all files, meaning that the progress can jump forwards.

I've had a look at other alternatives of messages to use, but haven't managed to find anything. Does anyone have any ideas?

Thanks in advance!

Answer

cnelson picture cnelson · Sep 1, 2011

The current version of rsync (at the time of editing 3.1.2) has an option --info=progress2 which will show you progress of the entire transfer instead of individual files.

From the man page:

There is also a --info=progress2 option that outputs statistics based on the whole transfer, rather than individual files. Use this flag without outputting a filename (e.g. avoid -v or specify --info=name0 if you want to see how the transfer is doing without scrolling the screen with a lot of names. (You don't need to specify the --progress option in order to use --info=progress2.)

So, if possible on your system you could upgrade rsync to a current version which contains that option.