Rsync में फ़ाइलों को बाहर कैसे करें?


12

मैं ubuntu सर्वर 12.04 का उपयोग कर रहा हूं, अब मैं rsync का उपयोग करके कुछ फ़ाइलों का बैकअप लेना चाहता हूं, यहां एक कोशिश है:

rsync -aAX $HOME/Documents/* $HOME/Backups/TEST --exclude={$HOME/Documents/another/*,$HOME/Documents/temp/*} 

आप देख सकते हैं, मैं बैकअप करना चाहते हैं फ़ोल्डर में सभी फ़ाइलें $ HOME / दस्तावेज़ फ़ोल्डर में $ HOME / बैकअप / टेस्ट , लेकिन बाहर निकालने के फ़ोल्डर में फ़ाइलें एक और और अस्थायी । लेकिन मैं विफल रहा, rsync ने अभी भी दोनों अपवर्जित फ़ोल्डरों में फ़ाइलों की प्रतिलिपि बनाई:

ls $HOME/Backups/TEST/another
test

परीक्षण फ़ोल्डर में एक फाइल है एक और , और यह भी कॉपी किया जाता है, हालांकि मैं rsync में फ़ाइल, क्यों निकालें? कैसे उन फ़ाइलों को वास्तव में बाहर रखा जाए?

जवाबों:


11

आपकी rsync कमांड के साथ कई समस्याएं हैं ( फ़िल्टर नियमों की विस्तृत व्याख्या के लिए rsync के लिए मैनपेज भी देखें )।

  • हमें --excludeकिसी भी दिए गए पैटर्न के लिए प्रत्येक कमांड की आवश्यकता है ।
  • दिए गए रास्तों को स्रोत पथ (कोई पूर्ण पथ नहीं) के सापेक्ष होना चाहिए।
  • विकल्प हमें राज्य स्रोत और गंतव्य से पहले दिए जाने की आवश्यकता है।

आपके उदाहरण के लिए निम्नलिखित सिंटैक्स काम करेगा:

rsync -avAX --exclude=another/ --exclude=temp/ ~/Documents/ ~/Backups/TEST

ध्यान दें कि यदि एक निष्कासन पैटर्न /इसके साथ समाप्त होता है, तो यह एक निर्देशिका को संदर्भित करता है। यदि आप इसे छोड़ देते हैं, तो उस नाम के साथ फाइल और निर्देशिका दोनों को बाहर कर दिया जाएगा। *अपने नामों में उस स्ट्रिंग के साथ सभी फ़ाइलों या निर्देशिकाओं को बाहर करने के लिए इसे वाइल्डकार्ड से बदलें ।


6
यह पूरी तरह सही नहीं है। मुझे यकीन नहीं है कि यह कैसे काम करता है, लेकिन प्रयोग से, सीधे स्रोत में --exclude=/fooनिर्देशिका को बाहर कर देगा foo, लेकिन--exclude=foo बाहर कर देगा उप नाम के किसी भी निर्देशिका को फू नाम से बाहर कर देगा।
स्परहॉक

10

आपको .rsync-filterअपने स्रोत निर्देशिकाओं में फ़ाइलें जोड़ना और -Fविकल्प का उपयोग करना आसान हो सकता है।

मैन पेज से:

-F: -F विकल्प इस नियम के लिए एक आशुलिपि [...] है:

 --filter='dir-merge /.rsync-filter'

यह rsync को प्रति-निर्देशिका .rsync-फ़िल्टर फ़ाइलों को देखने के लिए कहता है जो कि पदानुक्रम के माध्यम से छिड़के गए हैं और स्थानांतरण में फ़ाइलों को फ़िल्टर करने के लिए अपने नियमों का उपयोग करते हैं।

उदाहरण के लिए: $ HOME / दस्तावेज़ / .rsync-फ़िल्टर में

# you can add comments in filter files

- /another/
- /temp/

इसके बजाय -, आप पूरा शब्द भी लिख सकते हैं exclude

अब आप कर सकते हैं

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