Mengapa rsync menelurkan banyak proses untuk saya?

21

Saya menggunakan pernyataan cron berikut untuk membuat cadangan dari satu folder ke folder lain di mesin yang sama:

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

Ketika saya menggunakan pstree, saya melihat cron memotong tiga proses

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

Dan 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

Mengapa ada tiga proses? Bisakah saya membatasi hanya satu?

Ryan
sumber
Kenapa kamu peduli? Apakah itu menyebabkan masalah kinerja?
EEAA
2
Ya, berdampak pada kinerja server saya dan mereka menggunakan beberapa sumber daya
Ryan

Jawaban:

24

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

Rsync sangat pipelined. Ini berarti bahwa itu adalah serangkaian proses yang berkomunikasi dengan cara (sebagian besar) searah. Setelah daftar file dibagikan, pipa akan berperilaku seperti ini:
generator → sender → receiver

Output generator adalah input untuk pengirim dan output pengirim adalah input untuk penerima. Setiap proses berjalan secara independen dan tertunda hanya ketika pipa berhenti atau saat menunggu disk I / O atau sumber daya CPU.

Anda menjalankan rsync lokal (sumber dan tujuan adalah sistem file lokal) sehingga ketiga proses akan berjalan di sana.
Tidak ada yang dapat Anda lakukan, ini adalah desain.

pemalsu
sumber
8
Anda tidak dapat membatasi jumlah proses, tetapi Anda dapat membatasi bandwidth yang digunakan. Saya menganggap mesinnya dicambuk oleh rsync membaca dan menulis ke perangkat disk / blok yang sama. Menggunakan opsi '--bwlimit' dapat membantu dalam kasus ini.
JvO