为什么rsync为我生成多个进程?


21

我正在使用以下cron语句从同一计算机上的一个文件夹备份到另一个文件夹:

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

当我使用时pstree,我看到cron分叉了三个过程

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

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

为什么要三个过程?我可以限制为一个吗?


你为什么在乎?是否会导致性能问题?
EEAA 2013年

2
是的,会影响我的服务器性能,并且它们会占用大量资源
Ryan

Answers:


24

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

Rsync具有大量流水线。这意味着它是一组以(主要)单向方式通信的进程。共享文件列表后,管道的行为如下:
生成器→发送者→接收者

生成器的输出输入给发送方,发送器的输出输入给接收方。每个进程独立运行,并且仅在管道停止运行或等待磁盘I / O或CPU资源时才延迟。

您正在运行本地rsync(源和目标是本地文件系统),因此所有三个进程都将在此处运行。
您无能为力,这是设计使然。


8
您不能限制进程数,但是可以限制使用的带宽。我认为他的机器由于rsync读取和写入同一磁盘/块设备而变得混乱。在这种情况下,使用'--bwlimit'选项可能会有所帮助。
2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.