सवाल स्थानीय स्तर पर एक बड़ी निर्देशिका पेड़ की प्रतिलिपि बना रहे हैं? सीपी या rsync?


मुझे एक बड़ी निर्देशिका पेड़ की प्रतिलिपि बनाना है, लगभग 1.8 टीबी। यह सब स्थानीय है। आदत से मैं उपयोग करूंगा rsyncहालांकि, मुझे आश्चर्य है कि क्या बहुत कुछ है, और अगर मुझे इसका उपयोग करना चाहिए cp

मैं अनुमतियों और यूआईडी / ग्रिड के बारे में चिंतित हूं, क्योंकि उन्हें प्रतिलिपि में संरक्षित किया जाना है (मुझे पता है कि rsync यह करता है)। साथ ही symlinks जैसी चीजें।

गंतव्य खाली है, इसलिए मुझे कुछ फ़ाइलों को सशर्त रूप से अद्यतन करने की चिंता करने की आवश्यकता नहीं है। यह सभी स्थानीय डिस्क है, इसलिए मुझे एसएसएच या नेटवर्क के बारे में चिंता करने की ज़रूरत नहीं है।

कारण मैं rsync से दूर लुभाना चाहता हूं, क्योंकि rsync मुझे आवश्यकता से अधिक कर सकता है। rsync चेकसम फाइलें। मुझे इसकी आवश्यकता नहीं है, और मुझे चिंता है कि इसमें सीपी से अधिक समय लग सकता है।

तो आप क्या मानते हैं, rsync या cp?


217
2017-07-20 14:36


मूल


यदि rsync ठीक वही करता है जो आप करना चाहते हैं, यदि आप पहले से ही इस विशेष एप्लिकेशन के उपयोग से काफी परिचित हैं, और यदि यह आपके स्वाद के अनुरूप पर्याप्त रूप से पर्याप्त कार्य करता है, तो आप पृथ्वी पर क्यों स्विच करना चाहते हैं? - eleven81
क्योंकि मुझे चिंतित है कि rsync सीपी से अधिक समय लेगा, क्योंकि rsync बहुत सारे चेकसमिंग करता है कि सीपी नहीं करेगा - Rory
चेकसम के सीपीयू ओवरहेड डिस्क / नेटवर्क i / o की तुलना में छोटा है। जब तक डिस्क एक ही सिस्टम पर न हो और ओएस बस नियंत्रक में कुछ चालाक ड्राइव-ड्राइव प्रतिलिपि कर सके। - Martin Beckett
चेकसमिंग उन फ़ाइलों पर किया जाता है जो आकार और टाइमस्टैम्प चेक पर भिन्न होते हैं। यदि आप पागल हैं (जैसे प्रतिलिपि के दौरान बिजली आउटेज के बाद) आप सभी फाइलों पर चेकसमिंग को मजबूर कर सकते हैं, लेकिन स्थानीय हस्तांतरण पर, यह आमतौर पर स्क्रैच से शुरू होने से धीमा होता है। - korkman
हो सकता है कि वह अपने वर्कफ़्लो में सुधार करने के बारे में उत्सुक है, और अपने सिर को रेत में दफन नहीं करता है क्योंकि वह सबकुछ जानता है। यह टिप्पणी वास्तव में मुझे परेशान करती है। - Martin Konecny


जवाब:


मैं rsync का उपयोग करता हूं क्योंकि इसका मतलब है कि यदि किसी भी कारण से यह बाधित है, तो आप इसे बहुत कम लागत से आसानी से पुनरारंभ कर सकते हैं। और rsync होने के नाते, यह एक बड़ी फ़ाइल के माध्यम से भी भाग मार्ग को पुनरारंभ कर सकते हैं। जैसा कि अन्य लोग उल्लेख करते हैं, यह फ़ाइलों को आसानी से बाहर कर सकता है। अधिकांश चीजों को संरक्षित करने का सबसे आसान तरीका है इसका उपयोग करना -a ध्वज - 'संग्रह'। तो:

rsync -a source dest

हालांकि यूआईडी / जीआईडी ​​और सिम्लिंक संरक्षित हैं -a (देख -lpgo), आपके प्रश्न का तात्पर्य है कि आप एक चाहते हैं पूर्ण फाइल सिस्टम जानकारी की प्रति; तथा -a हार्ड-लिंक, विस्तारित विशेषताओं, या एसीएल (लिनक्स पर) या ऊपर शामिल नहीं है  संसाधन कांटे (ओएस एक्स पर) इस प्रकार, एक फाइल सिस्टम की एक मजबूत प्रतिलिपि के लिए, आपको उन झंडे को शामिल करने की आवश्यकता होगी:

rsync -aHAX source dest # Linux
rsync -aHE source dest  # OS X

डिफ़ॉल्ट सीपी फिर से शुरू होगा, हालांकि -u झंडा होगा "केवल तब कॉपी करें जब SOURCE फ़ाइल गंतव्य फ़ाइल से नई हो या जब गंतव्य फ़ाइल गुम हो जाए"। और यह -a (संग्रह) ध्वज रिकर्सिव होगा, अगर आपको पुनरारंभ करना है और अनुमतियों को संरक्षित करना है तो फ़ाइलों को दोबारा नहीं दोहराएं। इसलिए:

cp -au source dest

188
2017-07-20 14:40



सीपी का ध्वज शायद सबसे अच्छा समाधान नहीं है, क्योंकि यह आंशिक रूप से प्रतिलिपि / दूषित फ़ाइल का पता नहीं लगाएगा। Rsync के बारे में अच्छी बात यह है कि आप एमडी 5 को अंतर का पता लगाने के लिए फाइलों को जोड़ सकते हैं। - Chad Huneycutt
जोड़ना -w (--whole-file) विकल्प एक बाधित rsync को गति देगा, क्योंकि यह केवल चेकसमिंग के बजाय फ़ाइल की प्रतिलिपि बनायेगा। - hayalci
असल में, rsync स्थानीय स्थानान्तरण का पता लगाता है और स्वचालित रूप से चेकसमिंग के बिना पूरी फ़ाइल प्रतिलिपि को सक्षम बनाता है। - korkman
और - प्रगति जो वास्तव में आसान है! - Matt
-पी या - प्रगति प्रत्येक फ़ाइल के लिए अलग-अलग प्रगति दिखाती है। यह बड़ी फ़ाइलों की प्रतिलिपि बनाने के लिए उपयोगी है, न कि कई (हजारों) छोटी फाइलों के लिए, क्योंकि इसका मतलब है कि बहुत अधिक आउटपुट जिसे आप पढ़ नहीं सकते हैं। यह संयुक्त सभी फ़ाइलों की अत्यधिक प्रगति नहीं दिखाता है। - SPRBRN


स्थानीय फ़ाइल सिस्टम में प्रतिलिपि करते समय मैं हमेशा निम्नलिखित rsync विकल्पों का उपयोग करता हूं:

# rsync -avhW --no-compress --progress /src/ /dst/

मेरा तर्क यहां दिया गया है:

-a is for archive, which preserves ownership, permissions etc.
-v is for verbose, so I can see what's happening (optional)
-h is for human-readable, so the transfer rate and file sizes are easier to read (optional)
-W is for copying whole files only, without delta-xfer algorithm which should reduce CPU load
--no-compress as there's no lack of bandwidth between local devices
--progress so I can see the progress of large files (optional)

मैंने निम्न टैर कमांड पर उपर्युक्त rsync सेटिंग्स का उपयोग करके 17% तेज स्थानान्तरण देखा है जैसा कि किसी अन्य उत्तर द्वारा सुझाया गया है:

# (cd /src; tar cf - .) | (cd /dst; tar xpf -)

89
2018-05-07 19:09



मुझे निम्न त्रुटि हो रही है: rsync: --no-compress: unknown option @ एलिस पेरिसवाल। - alper
यह तेजी से हल्का हो रहा है। इससे करने के लिए तेज़ rm -rf /src/। - dgo
@ एल्पर की तरह, --no-compress rsync के मेरे संस्करण (CentOS 7 में) के लिए एक विकल्प नहीं था; मैंने इसके बजाय --compress-level = 0 का उपयोग किया। - Paul


जब मुझे बड़ी मात्रा में डेटा कॉपी करना होता है, तो मैं आमतौर पर टैर और rsync के संयोजन का उपयोग करता हूं। पहला पास इसे टारना है, ऐसा कुछ:

# (cd /src; tar cf - .) | (cd /dst; tar xpf -)

आम तौर पर बड़ी मात्रा में फाइलों के साथ, कुछ ऐसे होंगे जो टैर किसी भी कारण से संभाल नहीं सकते हैं। या हो सकता है कि प्रक्रिया बाधित हो जाएगी, या यदि यह एक फाइल सिस्टम माइग्रेशन है, तो आप वास्तविक माइग्रेशन चरण से पहले प्रारंभिक प्रतिलिपि करना चाहेंगे। किसी भी दर पर, प्रारंभिक प्रतिलिपि के बाद, मैं इसे सभी सिंक करने के लिए एक rsync चरण करता हूं:

# cd /dst; rsync -avPHSx --delete /src/ .

ध्यान दें कि पीछे पीछे स्लैश /src/ महत्वपूर्ण है।


78
2017-07-20 15:15



+1 मुझे rsync की तुलना में बड़ी प्रतियों के लिए आमतौर पर तेज़ लगता है। मुझे भी अंतिम rsync के साथ खत्म करने का विचार पसंद है। - Geoff Fritz
यदि dest dir खाली है तो tar एक अच्छा विकल्प है। हालांकि मेरा तरीका होगा: सीडी $ डीएसटीडीआईआर; टैर सी-सी $ एसआरसीडीआईआरआईआर। | टार - asdmin
यह इस विधि की सुंदरता है। आपको अंतरिक्ष को दोगुना करने की आवश्यकता नहीं है क्योंकि आप वास्तव में कभी भी मध्यवर्ती टैर फ़ाइल नहीं बनाते हैं। पाइप से पहले टैर डेटा पैक करता है और इसे stdout पर स्ट्रीम करता है, और पाइप के बाद टैर इसे stdin से पकड़ लेता है और इसे अनपैक करता है। - Chad Huneycutt
मैंने एक 12 जीबी स्थानांतरण के लिए एक सीपी-ए किया, और 42 जीबी स्थानांतरण के लिए यह विधि। टैर विधि में लगभग 1/4 समय लग गया। - NGaida
मैंने भी रखा pv मध्य में प्रगति को देखने में सक्षम होने के लिए, सभी डेटा का उपयोग करके अनुमान लगाया जा सकता है df। मैंने भी इस्तेमाल किया --numeric-owner, क्योंकि स्रोत डिस्क किसी अन्य सिस्टम से थी और मैं नहीं चाहता था tar मालिकों को गड़बड़ करने के लिए: tar -C /old-path --numeric-owner -S -c . | pv -tpeba -s 100G | tar -C /new-path --numeric-owner -S -xp - Petr Pudlák


rsync

यहां मैं जिस rsync का उपयोग करता हूं, मैं सरल आदेशों के लिए सीपी पसंद करता हूं, न कि यह।

$ rsync -ahSD --ignore-errors --force --delete --stats $SRC/ $DIR/

केन्द्रीय लोक सूचना अधिकारी

यहां एक तरीका है जो सुरक्षित, सीपीओ भी है। यह टैर के रूप में तेज़ी से है, शायद थोड़ा तेज।

$ cd $SRC && find . -mount -depth -print0 2>/dev/null | cpio -0admp $DEST &>/dev/null

टार

यह भी अच्छा है, और पढ़ने-विफलताओं पर जारी है।

$ tar --ignore-failed-read -C $SRC -cf - . | tar --ignore-failed-read -C $DEST -xf -

ध्यान दें कि वे सिर्फ स्थानीय प्रतियों के लिए हैं।


13
2018-02-26 17:06



आप rsync के लिए -S और -d ध्वज का उपयोग क्यों करते हैं? - miyalys


rsync -aPhW --protocol=28 आरएसवाईएनसी के साथ उन बड़ी प्रतियों को तेज करने में मदद करता है। मैं हमेशा rsync जाता हूं क्योंकि 90 जीआईबी के माध्यम से मिडवे होने का विचार और यह मुझे सीपी से दूर डराता है


6
2017-07-20 16:24



उस कमांड स्ट्रिंग में पुराने प्रोटोकॉल का उपयोग करने का क्या महत्व है? - ewwhite
मैक मशीन पर रुनिनक का पुराना संस्करण कुछ नए आरएसआईएनसी प्रोटोकॉल संशोधनों पर लटका हुआ है जैसे कि 29. पुराने प्रोटोकॉल में जाने के लिए इसे कहकर यह बार-बार जांच नहीं करता है। - oneguynick
मुझे लगता है कि संख्या 28 अब मान्य नहीं है? - SPRBRN


rsync आदेश हमेशा स्थानांतरण द्वारा हर बाइट पर चेकसम की गणना करता है।

कमांड लाइन विकल्प --checksum केवल यह बताता है कि फाइलों के चेकसम का उपयोग यह निर्धारित करने के लिए किया जाता है कि कौन सी फाइलें स्थानांतरित करने या नहीं, यानी:

-c, --checksum  चेकसम पर आधारित छोड़ें, मॉड-टाइम और आकार नहीं "

मैनपेज यह भी कहता है:

ध्यान दें कि rsync हमेशा सत्यापित करता है कि प्रत्येक स्थानांतरित फ़ाइल को पूरी तरह से फ़ाइल चेकसम की जांच करके प्राप्त करने वाले पक्ष पर सही ढंग से पुनर्निर्मित किया गया था, लेकिन स्वचालित रूप से हस्तांतरण सत्यापन के बाद स्वचालित रूप से इस विकल्प के पहले से स्थानांतरण के साथ कुछ लेना देना नहीं है "क्या इस फ़ाइल की आवश्यकता है अद्यतन किया जाएगा?" चेक।

इसलिए rsync हमेशा, प्राप्तकर्ता पक्ष पर पूरी फ़ाइल के चेकसम की गणना भी करता है, यहां तक ​​कि जब भी -c/ --checksum विकल्प "बंद" है।


6
2017-11-28 01:20



जबकि आपकी पोस्ट ने यहां कुछ रोचक जानकारी जोड़े हैं, rants, और अपमान आपकी पोस्ट के मूल्य को कम करते हैं। यह साइट गैर-रचनात्मक रानों के लिए एक मंच नहीं है। यदि आप स्रोत को संशोधित करने में सक्षम थे, तो क्या आपने पैच के रूप में अपने संशोधन सबमिट किए हैं? क्या आपने अपना संस्करण जिथब या कुछ पोस्ट किया है? यदि आप इसके बारे में इतनी दृढ़ता से महसूस करते हैं, तो बेहतर होगा कि आप अनावश्यक रूप से अपमानजनक होने की बजाय कुछ और रचनात्मक करने की कोशिश करें। - Zoredache
हाँ, अंतिम अनुच्छेद वास्तव में आवश्यक नहीं था। - Sherwin Flight


आप जो भी पसंद करें। बस मत भूलना -a जब आप उपयोग करने का फैसला करते हैं तो स्विच करें cp

यदि आपको वास्तव में एक उत्तर की आवश्यकता है: मैं rsync का उपयोग करता हूं क्योंकि यह अधिक लचीला है। कॉपी करने से पहले शट डाउन करने की आवश्यकता है? बस ctrl-c और जैसे ही आपकी पीठ फिर से शुरू करें। कुछ फाइलों को बाहर करने की आवश्यकता है? महज प्रयोग करें --exclude-from। स्वामित्व या अनुमतियों को बदलने की आवश्यकता है? rsync आपके लिए ऐसा करेगा।


5
2017-07-20 14:40



-पी ध्वज फिर से क्या करता है? - Rory
यह प्रेसेवर स्वामित्व, टाइमस्टैम्प और अनुमतियां होगा। - innaM
सीपी-ए बेहतर होगा। - David Pashley
वास्तव में। जवाब तदनुसार बदल गया। - innaM


rsync बहुत अच्छा है, लेकिन वास्तव में बड़ी निर्देशिका पेड़ों के साथ समस्याएं हैं क्योंकि यह पेड़ों को स्मृति में संग्रहीत करती है। मैं यह देखने के लिए देख रहा था कि जब मुझे यह धागा मिला तो वे इस समस्या को ठीक करेंगे या नहीं।

मैंने यह भी पाया:

http://matthew.mceachen.us/geek/gigasync/

आप पेड़ को मैन्युअल रूप से तोड़ सकते हैं और एकाधिक rsyncs चला सकते हैं।


5
2017-07-20 16:14



यदि आप संस्करण 3 का उपयोग करते हैं तो यह पूरे पेड़ को मेमोरी में नहीं रखता है यदि यह बड़ा है, तो यह एक वृद्धिशील-रिकर्सन एल्गोरिदम का उपयोग करता है: samba.org/ftp/rsync/src/rsync-3.0.0-NEWS - Kyle Brandt♦