Почему rsync порождает для меня несколько процессов?

22

Я использую следующую инструкцию 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
2
Да, влияют на производительность моего сервера, и они используют довольно много ресурсов
Райан

Ответы:

24

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

Rsync сильно конвейерен. Это означает, что это набор процессов, которые взаимодействуют (в значительной степени) однонаправленно. Как только список файлов был передан, конвейер ведет себя так:
генератор → отправитель → получатель

Выход генератора является входом для отправителя, а выход отправителя является входом для получателя. Каждый процесс выполняется независимо и задерживается только в случае остановки конвейеров или при ожидании дискового ввода-вывода или ресурсов ЦП.

Вы используете локальную rsync (источник и назначение - локальная файловая система), поэтому все три процесса будут работать там.
Ничего не поделаешь, это по замыслу.

обманщик
источник
8
Вы не можете ограничить количество процессов, но вы можете ограничить используемую пропускную способность. Я предполагаю, что его компьютер порочен чтением и записью rsync на тот же диск / блочное устройство. В этом случае может помочь использование параметра --bwlimit.
JvO