क्या डिफ़ॉल्ट रूप से गंतव्य पर rsync फ़ाइलों, फ़ोल्डरों को हटाता है?


44

फ़ाइलें

मान लीजिए कि /foo/srcजिसमें केवल शामिल है A.cऔर /foo/destजिसमें दोनों शामिल हैं A.cऔर B.c। और मान लें कि मैं निम्नलिखित कमांड चलाता हूं:

rsync /foo/src/ /foo/dest

विल rsyncमिटा B.c?

फ़ोल्डर

अब मान लीजिए कि /foo/srcइसमें Aकुछ फ़ाइलों के साथ /foo/destनिर्देशिका है Aऔर जिसमें दोनों निर्देशिकाएं हैं और Bप्रत्येक के अंदर कुछ फाइलें हैं। और मान लें कि मैं निम्नलिखित कमांड चलाता हूं (-a विकल्प में शामिल है -r, पुनरावर्ती):

rsync -a /foo/src/ /foo/dest

rsyncमिटा देंगे Bऔर इसकी सामग्री?


आपको --deleteस्विच की आवश्यकता है ।
फिडेली

जवाबों:


51

डिफ़ॉल्ट रूप से, rsync फ़ाइलों को हटाता नहीं है लेकिन यह आपके द्वारा निर्दिष्ट आदेश विकल्पों पर निर्भर करता है। यदि आप फ़ाइलों को हटाना चाहते हैं तो आप किसी भी निम्नलिखित का उपयोग कर सकते हैं:

  • −del (fordelete −− के लिए उर्फ) के दौरान
  • Destdelete (डेस्ट डायर से एक्सट्रूज़न फ़ाइलें हटाता है)
  • Xdelete (से पहले (रिसीवर xfer से पहले हट जाता है [डिफ़ॉल्ट])
  • के दौरान xdelete receiver (रिसीवर xfer के दौरान हटाता है, इससे पहले नहीं)
  • Xdelete (के बाद (रिसीवर xfer के बाद हटाता है, इससे पहले नहीं)
  • Eddelete ed बाहर रखा गया (डेस्ट डायर से बाहर की गई फ़ाइलों को भी हटा दें)
  • Deletemax = हटाएं = NUM ​​(NUM फ़ाइलों से अधिक नहीं हटाएं)

चूँकि आप विशेष रूप से -a विकल्प कहते हैं, यहाँ मैन पेज क्या कहता है

−a, −archive >

यह ptrlptgoD के बराबर है । यह कहने का एक त्वरित तरीका है कि आप पुनरावर्तन चाहते हैं और लगभग सब कुछ संरक्षित करना चाहते हैं (beingH एक उल्लेखनीय चूक होने के साथ)। उपरोक्त तुल्यता का एकमात्र अपवाद तब है जब −files specified से निर्दिष्ट किया जाता है, जिस स्थिति में isr निहित नहीं है।

ध्यान दें कि la हार्डलिंक को संरक्षित नहीं करता है , क्योंकि बहु-लिंक्ड फ़ाइलें खोजना महंगा है। आपको अलग से −H निर्दिष्ट करना होगा ।

तो ऐसा लगता है कि आपके सवाल का जवाब नहीं है, यह आपके उदाहरण दिए गए हटाए नहीं जाएंगे।
HTH

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