2011-03-17 11 views
9

को बाहर करने के विकल्प को आरएसआईएनसीसी के साथ कोई समस्या नहीं मिल सकती है। मैं rsync का उपयोग एक गौरवशाली सीपी कमांड के रूप में कर रहा हूं। मेरे पास निम्न कोड में एक स्क्रिप्ट है।rsync को dir

rsync -aL --exclude /path/to/exclude/ --exclude='.*' /source/ /destination

मैं किसी भी छिपी हुई फ़ाइलें बाहर करने के लिए rsync मिल सकती है। इसलिए '.*' मुझे बहिष्कृत करने के लिए बहिष्कार नहीं मिल सकता है। मैंने सिंगल कोट्स के साथ डबल कोट्स के साथ डीआईआर के आस-पास '=' साइन का उपयोग करने का प्रयास किया है। किसी भी तरह की सहायता का स्वागत किया जाएगा। अग्रिम में धन्यवाद।

+0

स्पष्टता के लिए, मैं कोशिश की है '--exclude =/path/to/को बाहर /' '--exclude/path/to/को बाहर /' '--exclude '/ path/to/को बाहर/' ' ' --exclude "/ path// बाहर करने के लिए /" ' ' --exclude = "/ path/to/को बाहर /" ' ' --exclude = '/ पथ/से/बहिष्कृत /' ' –

+0

पिछला/बिना rsync के कुछ व्यवहार के साथ '- बहिष्कृत'/पथ/से/बहिष्कृत 'का प्रयास करें I कुछ मामला अन्य, आप '- बहिष्कृत'/पथ/से/बहिष्कृत/* ' – Aif

+0

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

उत्तर

10
mkdir -p test/a/b/c/d/e 
mkdir -p test/dest 
rsync -nvraL test/a test/dest --exclude=a/b/c/d 

यह काम करता है। test/a से समन्वयित मूल निर्देशिका है, बाहर पैटर्न को a/

से शुरू करके निर्दिष्ट किया गया है, तो वास्तविक मार्ग/बहिष्कार दिखाएं यदि इससे मदद नहीं मिलती है।

आरएनआईएनसी के साथ चल रहा है -vn dirs/files सूचीबद्ध करेगा - पैटर्न rsync प्रिंट्स के प्रारूप के साथ मेल खाता है।

+0

के खिलाफ मेल खाता है, तो आप प्रतिक्रिया के लिए एरिक धन्यवाद। आप पैसे पर थे। यह अजीब बात है कि बहिष्कृत विकल्प पूर्ण पथ नहीं लेता है। –

+0

@ जेम्स पी आरएसआईएनसी फिल्टर वास्तव में सहज नहीं हैं ... लेकिन अच्छी तरह से, वे काम करते हैं, आपको बस कई बार मैनपेज में "फ़िल्टर नियम" पढ़ना होगा :) – Erik

2

एरिक के उदाहरण के बाद आप ऐसा करना चाहते हैं:

rsync -nvraL test/a/ test/dest --exclude=/b/c/d 
11

वास्तव में, इनमें से कोई भी पूरी तरह से सटीक हैं।

एरिक कह रही है कि

परीक्षा/एक के रूप में से, बाहर पैटर्न निर्दिष्ट किया जाता है सिंक किए गए आधार निर्देशिका एक/

के साथ शुरू कर रहा है में से आधे रास्ते सही है ऐसा नहीं है कि बाहर निकालने के लिए सच है पैटर्न का रूटtest/a (यानी पैटर्न /some/pathtest/a/some/path से बांधता है), लेकिन यह पूरी कहानी नहीं है।

आदमी पृष्ठ से

:

अगर पैटर्न के साथ एक/तो यह फ़ाइलों के पदानुक्रम में एक विशेष जगह पर लंगर डाले है शुरू होता है, अन्यथा यह पथ के अंत के खिलाफ मिलान किया जाता है। यह नियमित अभिव्यक्तियों में अग्रणी^के समान है। इस प्रकार "/ foo" "स्थानांतरण की जड़" (वैश्विक नियम के लिए) या मर्ज-फ़ाइल की निर्देशिका (प्रति-निर्देशिका नियम के लिए) में "foo" नाम की एक फ़ाइल से मेल खाएगा।

हम per-directory बिट को अनदेखा कर सकते हैं क्योंकि यह यहां हमारे लिए लागू नहीं होता है।

इसलिए, rsync -nvraL test/a test/dest --exclude=a/b/c/d सबसे निश्चित रूप से test/a/b/c/d (और बच्चों) को बाहर कर देगा, लेकिन इसमें test/a/other/place/a/b/c/d भी शामिल होगा।

rsync -nvraL test/a test/dest --exclude=/b/c/d, दूसरे हाथ पर, केवलtest/a/b/c/d (और बच्चे) को बाहर निकाल देगा (test/a बिंदु होने के जो / लंगर डाले है)।

यही कारण है कि यदि आप को उस विशिष्ट पथ को बैक अप लेने से बाहर करना चाहते हैं तो आपको अभी भी एंकरिंग इंटिटल स्लैश की आवश्यकता है। यह मामूली विस्तार की तरह प्रतीत हो सकता है, और यह उतना ही विशिष्ट होगा जितना आपका बहिष्कार पैटर्न बन जाएगा (उदा। Pictures बनाम home/daniel/Pictures) लेकिन यह आपको बट में काटने के लिए बस आ सकता है।

संबंधित मुद्दे