रु। सिवाय फ़ोल्डर और उनके उप-सामग्री को छोड़कर?


10

एक तोड़फोड़ रेपो और एक नए उपयोगकर्ता के साथ व्यवहार करना, जो यह समझ नहीं पाया कि यह कैसे काम करता है।

लंबी कहानी छोटी है, क्योंकि उनके स्थानीय ढांचे को यादृच्छिक रूप से कॉपी करने के कारण गड़बड़ हो गई थी। .एसवीएन फ़ोल्डर के बारे में, मैंने निम्नलिखित किया:

  • स्टेजिंग नामक एक फ़ोल्डर में स्थानीय संरचना की नकल की
  • चरणबद्ध निर्देशिका से सभी .svn फ़ोल्डरों को पुन: हटा दिया गया
  • "साफ फ़ोल्डर" के लिए रेपो की जाँच की

अब हम अंतिम चरण पर हैं - स्वच्छ सामग्री को अधिलेखित करने के लिए मचान फ़ोल्डर सामग्री प्राप्त करना।

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

यह rsync के लिए एक नौकरी की तरह लगता है। क्या निम्न आदेश सही होगा?

rsync -avr --exclude=.svn* [staging] [clean]

6
आप हमेशा पता लगाने rsyncके --dry-runविकल्प के साथ दौड़ सकते हैं !
टिम

हा हा हा शुक्रिया! कोई विचार नहीं था कि विकल्प मौजूद था। आदमी को और ध्यान से पढ़ना चाहिए था!
SeanKilleen

जवाबों:


31

-CRsync का विकल्प वह हो सकता है जो आप चाहते हैं।

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

# rsync version: 3.0.7

-C, --cvs-exclude           auto-ignore files in the same way CVS does

...

          The exclude list is initialized to exclude the  following  items
          (these  initial  items are marked as perishable — see the FILTER
          RULES section):

                 RCS  SCCS  CVS  CVS.adm   RCSLOG   cvslog.*   tags   TAGS
                 .make.state  .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak
                 *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so  *.exe
                 *.Z *.elc *.ln core .svn/ .git/ .bzr/

          then,  files  listed in a $HOME/.cvsignore are added to the list
          and any files listed in the CVSIGNORE environment variable  (all
          cvsignore names are delimited by whitespace).

2
बहुत सावधान रहें, क्योंकि इन एक्सटेंशन का उपयोग उन फ़ाइलों के लिए किया जा सकता है जिन्हें आप कॉपी करना चाहते हैं, जैसे। *.aiOS स्टेटिक लाइब्रेरीज़ के लिए है।
मैक्स चुक्विमिया

नायब फ़ाइलों और निर्देशिकाओं को बाहर रखा गया है: "कोर" नामक किसी भी फ़ोल्डर की नकल नहीं की जाती है जैसे / myproj / api / / myproj / core / <- समर्थित नहीं है!
तेक्नोपॉल

7

लगभग - यह होना चाहिए

rsync -av --exclude='.svn*' [staging] [clean]

या किसी भी अन्य प्रकार का उद्धरण जो शेल को वाइल्डकार्ड के विस्तार से रोकता है। (वाइल्डकार्ड केवल एक असंभावित फ़ाइल से मेल खाएगा, जिसका नाम इसके साथ शुरू होता है --exclude=.svn, लेकिन यह बेहतर है कि जोखिम न लें, और सही ढंग से काम करने के लिए भी अगर शेल को गैर-मिलान वाले वाइल्डकार्ड पर चोक करने के लिए या खाली सूची में विस्तार करने के लिए कॉन्फ़िगर किया गया है। )

-rपहले से ही शामिल है -a। अतिरिक्त rसिर्फ ज़रूरत से ज़्यादा है, यह कोई नुकसान नहीं करेगा।

--excludeइसके तर्क से मेल खाने वाली फ़ाइलों को न तो कॉपी किया जाता है, न ही पुनरावर्ती ट्रैवर्सल के लिए माना जाता है। Rsync के साथ सामान्य कठिनाई दूसरी तरह से जा रही है, इसके कुछ हिस्सों को छोड़कर एक निर्देशिका को छोड़कर। Rsync फ़िल्टर देखें : केवल कुछ युक्तियों के लिए एक पैटर्न कॉपी करना

इस विशेष मामले में, संस्करण नियंत्रण निर्देशिकाओं को छोड़कर आप जो चाहते हैं उसे प्राप्त करने का एक त्वरित तरीका है।

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