सवाल Rsync डिलीट विकल्पों के बीच अंतर क्या हैं?


मैं देखता हूँ rsync आदमी पेज कि वहां कई संख्याएं हैं delete विकल्प, लेकिन वास्तव में उनके बीच मतभेदों को समझ में नहीं आता है। इन विकल्पों के बीच मतभेद क्या हैं?

 --del                   an alias for --delete-during
 --delete                delete extraneous files from dest dirs
 --delete-before         receiver deletes before transfer (default)
 --delete-during         receiver deletes during xfer, not before
 --delete-delay          find deletions during, delete after
 --delete-after          receiver deletes after transfer, not before
 --delete-excluded       also delete excluded files from dest dirs

101
2018-06-25 12:29


मूल


क्यूं कर --delete-before के रूप में वर्णित है (default)? मैं समझ नहीं पा रहा हूँ क्या (default) माध्यम। - Marco Marsala
यह अब डिफ़ॉल्ट में निर्दिष्ट नहीं है man के लिए पेज rsync version 3.1.2 protocol version 31। हालांकि, उद्धृत पाठ के साथ संस्करण पर मेरा अनुमान यह है कि यदि आप केवल उपयोग करते हैं --delete बजाय --delete-WHEN, तो ऐसा लगता है कि आपने निर्दिष्ट किया है --delete-WHEN कहा पे WHEN के लिए डिफ़ॉल्ट before। - Tom Hale


जवाब:


  • --del/--delete_during: गंतव्य डीआईआर से फ़ाइलों को हटा देता है क्योंकि उनकी प्रतिलिपि बनाई जाती है (तुलना में स्मृति बचाता है --delete-before: --delete-before हटाने योग्यों को देखने के लिए एक अलग स्कैन बनाता है)

  • --delete: गंतव्य निर्देशिका में फ़ाइलों को हटा देता है अगर वे स्रोत निर्देशिका में मौजूद नहीं हैं।

  • --delete-before: स्रोत निर्देशिका से फ़ाइल-समान-नाम की प्रतिलिपि बनाने से पहले गंतव्य निर्देशिका में फ़ाइलों को हटाएं

  • --delete-during: गंतव्य निर्देशिका में फ़ाइलों को हटाएं WHILE स्रोत निर्देशिका से फ़ाइल-समान-नाम की प्रतिलिपि बनाते हैं

  • --delete-delay: हस्तांतरण के दौरान चिह्नित हटाएं, लेकिन स्थानांतरण पूरा होने तक प्रतीक्षा करें

  • --delete-after: रिसीवर हस्तांतरण के बाद हटा देता है, पहले नहीं ... अगर rsync के किसी अन्य भाग ने कहीं और अतिरिक्त फाइलें स्थानांतरित की हैं, तो आप इसे इसके बजाय चाहते हैं --delete-delay, इसलिये --delete-delay यह तय करता है कि स्थानांतरण के बीच में क्या हटाना है, जबकि --delete-after उन फ़ाइलों के लिए निर्देशिका की जांच करता है जिन्हें हटाया जाना चाहिए सबकुछ समाप्त होने के बाद।

  • --delete-excluded: गंतव्य निर्देशिका से फ़ाइलों को हटा देता है जिन्हें स्पष्ट रूप से स्रोत निर्देशिका से स्थानांतरित करने से बाहर रखा गया है।

Rsync का बिंदु प्रतिलिपि नहीं बना रहा है, यह संग्रहित है। यह एक महत्वपूर्ण अंतर है। प्रसंस्करण हटाई गई / बदली गई फाइलें महत्वपूर्ण हैं, और कई मामलों में nuanced।

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

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


101
2018-06-25 14:19



तो क्या है - डिलीट और --delete- इससे पहले? आदमी rsync यह नहीं कहता है कि --delete फ़ाइलों को हटा देता है। - ppr
@ पीआरपी: सिस्टम पर निर्भर करता है। कारणों में इतने सारे विशिष्ट विकल्प हैं क्योंकि सोलारिस पर हटाएं! = एचपी-यूएक्स पर हटाएं! = एईक्स पर हटाएं! = लिनक्स पर हटाएं। - Satanicpuppy
जब एक पूरी निर्देशिका rsyncing, करता है delete-after समन्वयन के बीच में प्रत्येक फ़ाइल को हटा दें, या केवल पूरे डीआईआर के प्रतिबिंबित होने के बाद ही हटाएं? मैंने सोचा delete-after मेरी ज़रूरतों के लिए पर्याप्त था लेकिन मेरे ड्राइव में बैकअप लेने पर मुझे डिवाइस पर कोई जगह नहीं छोड़ी जा रही है। - Sridhar-Sarnobat
@ श्रीधर-सरनोबत: या तो। यह सबकुछ चलता है जो इसे स्थानांतरित करने जा रहा है, और जब यह हो जाता है, तो यह चीजों को हटाने शुरू कर देता है। यदि आप इसे सब कुछ ले जाने से पहले हटाना चाहते हैं, तो --delete-during का उपयोग करें - Satanicpuppy
कुछ अनुभव के बाद, मुझे यह भी मिल रहा है delete-during हमेशा रोक नहीं है no space left on device (लिनक्स पर)। इसलिए delete-before इससे बचने का एकमात्र गारंटी तरीका है (जैसे कि लगभग एक ड्राइव को मिरर करना, और गंतव्य ड्राइव लगभग भी भरा हुआ है)। - Sridhar-Sarnobat


दो चीजें चल रही हैं:

  1. हटाना कौन करता है
  2. जब यह होता है

या तो प्रेषक या रिसीवर को हटाने के लिए निर्देश दिया जा सकता है (मुझे यकीन नहीं है कि यह क्यों मायने रखता है)। तो जब एक कंप्यूटर से rsync दूसरी तरफ rsync सर्वर से कनेक्ट होता है, तो यह निर्धारित करता है कि हटाए गए कमांड को प्रभावी ढंग से कौन जारी कर रहा है।

जब ऐसा होता है तो यह बहुत आसान होता है ... इससे पहले कि सभी फाइलें हटा दी गई हैं, और फिर फ़ाइलों पर rsync प्रतिलिपि बनाते हैं। माध्यमों के माध्यम से यह फाइलों की सूची के माध्यम से जाता है, जब यह उनकी बात आती है, तो यह उन्हें हटा देता है, और इसका मतलब यह तब तक इंतजार करता है जब तक कि सभी फाइलें स्थानांतरित नहीं हो जातीं और फिर दूरस्थ पक्ष को हटा देती हैं। यह केवल तब मायने रखता है जब स्थानांतरण बाधित हो जाता है।


1
2018-06-25 12:57



मुझे पूरा यकीन है कि इनमें से कोई भी विकल्प चीजों को हटाने से संबंधित नहीं है प्रेषक का पक्ष। उनमें से सभी (AFAIK) चीजों को हटाने से संबंधित हैं रिसीवर के पक्ष। साथ ही, आप कहते हैं: "इससे पहले कि सभी फाइलें हटा दी गई हैं, और फिर फाइलों पर rsync प्रतियां" - क्या यह सही है? मैं उम्मीद करता हूँ --delete-before केवल उन फ़ाइलों को हटाने के लिए जिन्हें जाने की आवश्यकता है, नहीं सब फ़ाइलें! लेकिन मुझे लगता है कि यह है मुमकिन कि rsync सब कुछ हटा देता है और फिर "नया" (संभवतः अपरिवर्तित) डेटा पर स्थानांतरित करता है ... - Quuxplusone
आह, "प्रेषक की ओर से हटाएं" है rsync द्वारा समर्थित है, लेकिन उस विकल्प का नाम है --remove-source-files। - Quuxplusone


उल्लेख करने का एक अन्य बिंदु यह है कि यदि आपकी स्रोत निर्देशिका समाप्त होती है /*, तो rsync केवल विचार करेगा उन फाइलें और निर्देशिका ही नहीं (और इस प्रकार उन फ़ाइलों की अनुपस्थिति जिन्हें आप गंतव्य पर हटा देना चाहते हैं)।

यदि आप ऊपर एक डिलीट विकल्प निर्दिष्ट कर रहे हैं, लेकिन rsync ऐसा लगता है कि यह हटा नहीं रहा है, तो यह सुनिश्चित करने के लिए जांचें कि आप गलती से ग्लोबिंग नहीं कर रहे हैं और जब आप निर्देशिका का मतलब रखते हैं तो फाइलों की एक सूची प्रदान कर रहे हैं।


1
2018-01-17 18:50