Ctrl-c के साथ rsync को बाधित करते हुए, क्या मुझे `--partial` या` -append` का उपयोग करना चाहिए?


14

मैं बीच में चाहते हैं rsyncके साथ ctrl-c(चलो कहते हैं कि के बाद आधा फ़ाइल स्थानांतरित किया गया है) डेटा कि पहले से ही स्थानांतरित किया गया है फिर से भेजें बिना और फिर शुरू करें।

स्टैकएक्सचेंज / Google जानकारी जो मैंने पाया है कि परस्पर विरोधी लगती है। मुझे कुछ ऐसे लोग मिले जो कहते हैं कि उपयोग करें --partialऔर कुछ कहते हैं कि उपयोग करें --append। मेरे लिए ऐसा लगता है कि वे दोनों काम करेंगे।

अगर मुझे ctrl-c के साथ rsync को बाधित करना है, तो क्या मुझे उपयोग करना चाहिए --partialया --append?

यदि दोनों काम करेंगे, तो एक बनाम दूसरे का उपयोग करना बेहतर है?

जवाबों:


8

पुनः आरंभ करने के लिए, --partialपर्याप्त है। उपयोग करें --inplaceयदि आप वास्तव में rsyncएक अस्थायी फ़ाइल नहीं बनाना चाहते हैं जो मौजूदा कॉपी किए गए डेटा और नए को मर्ज करता है, उदाहरण के लिए यदि rsyncलक्ष्य फ़ोल्डर में एक अस्थायी फ़ाइल बनाने की अनुमति समस्या होगी।

केवल तभी उपयोग करें --appendजब आप गारंटी दे सकते हैं कि आंशिक रूप से कॉपी किया गया डेटा अभी भी स्रोत के समान है। (आम तौर पर यह एक गलत अनुकूलन है।)


1
इसलिए जब मैं उपरोक्त विकल्पों का उपयोग करता हूं (वास्तव में --append- सत्यापित) और rsync अभी भी दावा करता है कि यह शुरुआत से शुरू हो रहा है, और मुझे फ़ाइल-आकार और शेष फ़ाइल समय में कोई बदलाव नहीं दिखाई देता है जो कि मूल रूप से था जब मैंने कॉपी शुरू की, क्या rsync झूठ बोल रहा है, या मुझे चिंतित होना चाहिए?
माइकल

@ मिचेल यदि आपके पास एक स्थानीय स्रोत है और गंतव्य सभी नियमों को बदल देता है।
रोज़ा

मैं इसे पूरे लैन पर कर रहा था, लेकिन थोड़ा और प्रयोग करने के बाद, ऐसा प्रतीत होता है कि यह मुद्दा यह है कि चूंकि --append-verifyवास्तव में दोनों पक्षों पर फ़ाइल के हिस्सों को वास्तव में पढ़ना है, इसलिए वहाँ टोंटी के कारण टी कोई तेज़ नहीं है रीड साइड पर एक पुरानी ड्राइव होने के नाते और लैन ही नहीं।
माइकल

@Michael अच्छी तरह से हाँ, यदि आपने पहले से प्रेषित डेटा के सत्यापन के लिए कहा है तो उसे डेटा पढ़ना होगा!
रोइमा

1
@alper मैंने पहले कभी उस विकल्प पर ध्यान नहीं दिया। ऐसा लगता है कि इसका उपयोग करना सबसे अच्छा होगा --partial-dir, लेकिन मैंने अभी तक इसकी कोशिश नहीं की है।
रोइमा

3
  • --append मान लें कि फ़ाइल गंतव्य में पहले से मौजूद हो सकती है, यह सिर्फ rsync को पहले से ही वहां की सामग्री की जांच नहीं करने देता (लेकिन नीचे देखें)।
  • --partial आंशिक रूप से स्थानांतरित फ़ाइलों को नहीं हटाने के लिए rsync को बताता है।

तुम भी आवश्यकता होगी --inplaceके साथ --partial(इसके साथ निहित है --append)।

पता चला है --inplaceवास्तव में निकलता है --partial, ऐसा क्यों है --appendपर्याप्त है (इसका अर्थ है --inplaceजिसका मतलब है --partial)। लेकिन --partialअकेले पर्याप्त नहीं है, आपको ज़रूरत है --inplace, अन्यथा rsync अंतिम एक को अपडेट करने के बजाय अस्थायी फ़ाइलें बनाता है।


अगर मैं ctrl-c के साथ rsync को बाधित करना चाहता हूं, तो मैं उपयोग करूंगा --append? क्योंकि --partialअपने आप से फिर से शुरू नहीं होगा।
ट्रेवर बॉयड स्मिथ

मैं अभी उपयोग करता हूँ --inplace। rsync "हमेशा पुनरारंभ" (यह आवश्यक न्यूनतम डेटा स्थानांतरित करने की कोशिश करता है)। --appendगंतव्य पर पहले से मौजूद डेटा को चेकसम न करने के लिए rsync को क्या बताया गया है, इसलिए यदि गंतव्य पर आंशिक फ़ाइल दूषित हो गई है, तो यह दूषित रहेगी --append--appendदिलचस्प हो सकता है अगर, कहते हैं, आंशिक फ़ाइल बहुत बड़ी है और आप प्रतीक्षा नहीं कर सकते हैं (और यह निश्चित है कि यह भ्रष्ट है या नहीं) या कुछ अन्य विशिष्ट स्थिति की प्रतीक्षा करें।
spuk

1
फेडोरा 20 man rsyncपर विकल्प --appendकहता है... Implies --inplace
ट्रेवर बॉयड स्मिथ

1
--inplaceकाम करेगा। --appendकाम करेगा क्योंकि (जैसा कि मैंने उत्तर में बताया है) इसका तात्पर्य है --inplace, जिसका तात्पर्य है --partial(जो कि मूल प्रश्न के रूप में Ctrl-c द्वारा बाधित होने पर आंशिक रूप से स्थानांतरित फ़ाइलों को रखेगा)। तो --appendइसका मतलब है "के रूप में करते हैं --inplace, लेकिन चेकसम नहीं है जो पहले से ही गंतव्य में है । यह एक महत्वपूर्ण अंतर है। यदि आप परवाह नहीं करते हैं, तो या तो उपयोग करें।
'12

1
तो फिर क्या की बात है --partial बिना --inplace
इवान कैरोल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.