30

I am using the following cron statement to backup from one folder to another folder in the same machine:

19 21 * * * root  rsync -ac --delete /source/folder /dest/folder

When I use pstree, I see the cron forked three processes

 ├─cron───cron───rsync───rsync───rsync

And ps

 9972 ?        Ds     1:00 rsync -ac --delete /source/folder /dest/folder
 9973 ?        S      0:29 rsync -ac --delete /source/folder /dest/folder
 9974 ?        S      0:09 rsync -ac --delete /source/folder /dest/folder

Why are three processes? Can I limit to only one?

MadHatter
  • 79,770
  • 20
  • 184
  • 232
Ryan
  • 5,831
  • 24
  • 72
  • 91

1 Answers1

35

http://rsync.samba.org/how-rsync-works.html

Rsync is heavily pipelined. This means that it is a set of processes that communicate in a (largely) unidirectional way. Once the file list has been shared the pipeline behaves like this:
generator → sender → receiver

The output of the generator is input for the sender and the output of the sender is input for the receiver. Each process runs independently and is delayed only when the pipelines stall or when waiting for disk I/O or CPU resources.

You are running a local rsync (source and destination are local filesystem) so all three processes will run there.
There is nothing you can do, this is by design.

faker
  • 17,496
  • 2
  • 60
  • 70
  • 11
    You cannot limit the number of processes, but you **can** limit the bandwidth used. I assume his machine is flogged by rsync reading and writing to the same disk/block device. Using the '--bwlimit' option may help in this case. – JvO Oct 20 '13 at 14:53