जब आप फ़ाइलों का एक ही सेट भेजते हैं, rsync
तो बेहतर अनुकूल होता है क्योंकि यह केवल अंतर भेजेगा। tar
हमेशा सबकुछ भेजेगा और यह संसाधनों की बर्बादी है जब बहुत सारा डेटा पहले से है। tar + rsync + untar
इस मामले में यह लाभ है, साथ ही साथ में-सिंक फ़ोल्डरों रखने का लाभ खो देता है rsync --delete
।
यदि आप पहली बार फाइलों को कॉपी करते हैं, पहले पैकेटिंग करते हैं, फिर भेजते हैं, तो अनपैकिंग (AFAIK rsync
पाइप्ड इनपुट नहीं लेता है) बोझिल है और हमेशा सिर्फ rsyncing की तुलना में खराब है, क्योंकि वैसे भी rsync
किसी भी कार्य को अधिक नहीं करना होगा tar
।
युक्ति: rsync संस्करण 3 या बाद में वृद्धिशील पुनरावृत्ति होती है, जिसका अर्थ है कि यह सभी फ़ाइलों को गिनने से पहले लगभग तुरंत कॉपी करना शुरू कर देती है।
टिप 2: यदि आप rsync
अधिक उपयोग करते हैं ssh
, तो आप भी उपयोग कर सकते हैंtar+ssh
tar -C /src/dir -jcf - ./ | ssh user@server 'tar -C /dest/dir -jxf -'
या केवल scp
scp -Cr srcdir user@server:destdir
सामान्य नियम, इसे सरल रखें।
अद्यतन करें:
मैंने 59M डेमो डेटा बनाया है
mkdir tmp; cd tmp
for i in {1..5000}; do dd if=/dev/urandom of=file$i count=1 bs=10k; done
और दोनों तरीकों का उपयोग करके कई बार फ़ाइल को दूरस्थ सर्वर (एक ही लैन में नहीं) में स्थानांतरित किया गया
time rsync -r tmp server:tmp2
real 0m11.520s
user 0m0.940s
sys 0m0.472s
time (tar cf demo.tar tmp; rsync demo.tar server: ; ssh server 'tar xf demo.tar; rm demo.tar'; rm demo.tar)
real 0m15.026s
user 0m0.944s
sys 0m0.700s
भेजे गए ट्रैफ़िक पैकेट से अलग लॉग रखते हुए
wc -l rsync.log rsync+tar.log
36730 rsync.log
37962 rsync+tar.log
74692 total
इस स्थिति में, मैं rsync + टार का उपयोग करके कम नेटवर्क ट्रैफ़िक में कोई लाभ नहीं देख सकता, जो कि अपेक्षित है जब डिफ़ॉल्ट mtu 1500 और जब फाइलें 10k आकार की हों। rsync + tar में अधिक ट्रैफ़िक उत्पन्न हुआ था, 2-3 सेकंड के लिए धीमा था और दो कचरा फ़ाइलों को छोड़ दिया गया था जिन्हें साफ करना था।
मैंने एक ही लैन पर दो मशीनों पर एक ही परीक्षण किया, और वहां rsync + tar ने बहुत बेहतर समय और बहुत कम नेटवर्क ट्रैफ़िक किया। मैं जंबो फ्रेम का कारण मानता हूं।
शायद rsync + टार बहुत बड़ा डेटा सेट पर rsync से बेहतर होगा। लेकिन स्पष्ट रूप से मुझे नहीं लगता कि यह परेशानी के लायक है, आपको पैकिंग और अनपैकिंग के लिए प्रत्येक पक्ष में डबल स्थान की आवश्यकता है, और कुछ अन्य विकल्प भी हैं जैसा कि मैंने पहले ही ऊपर उल्लेख किया है।