कैसे कई स्रोत फ़ोल्डर rsync करने के लिए


34

मैं कई स्रोतों को rsync करना चाहता हूं और मुझे यह हासिल करने का सबसे अच्छा तरीका है।

जैसे

/etc/fstab
/home/user/download

मैंने 3 समाधानों के बारे में सोचा:

  • समाधान 1

rsync को कई कॉल

rsync -a /etc/fstab bkp
rsync -a /home/user/download bkp

con: कठिन agreggated स्टेट है

  • समाधान २

एक tobackupफ़ोल्डर बनाएं जिसमें सिमिलिंक हो, और -Lविकल्पों का उपयोग करें

sync -aL /home/user/tobackup bkp

con: बैकअप के लिए सामग्री में सीमलिंक नहीं होना चाहिए

  • समाधान 3

फ़ाइलों को बैकअप में ले जाएं और मूल स्थान पर सिम्लिंक बनाएं

rsync -a /home/user/tobackup bkp

con: कुछ मैनुअल कॉन्फिग

आप किसकी सिफारिश करते हैं ?

क्या कोई बेहतर तरीका है ?


जवाबों:


33

आप कई स्रोत तर्क पास कर सकते हैं।

rsync -a /etc/fstab /home/user/download bkp

यह आपके द्वारा दिए गए अलग-अलग कमांड की तरह बनाता है bkp/fstabऔर bkp/download। इसके बजाय स्रोत संरचना को संरक्षित करना वांछनीय हो सकता है। ऐसा करने के लिए, /स्रोत के रूप में उपयोग करें और इसमें शामिल हैं कि कौन सी फ़ाइलों को कॉपी करें, यह निर्दिष्ट करने के लिए नियमों को शामिल करें। इसे करने के दो तरीके हैं:

  • स्पष्ट रूप से प्रत्येक फ़ाइल के साथ-साथ प्रत्येक निर्देशिका घटक को इसमें शामिल करें, /***निर्देशिका के अंत में, जब आप पूरी निर्देशिका ट्री की प्रतिलिपि बनाना चाहते हैं:

    rsync -a \
        --include=/etc --include=/etc/fstab \
        --include=/home --include=/home/user --include='/home/user/download/***' \
        --exclude='*' / bkp
    
  • के साथ सभी उच्च-स्तरीय निर्देशिका शामिल करें /*/(ताकि rsync पार किए /etcऔर /homeजब नकल करने के लिए फ़ाइलों की तलाश में) के साथ और दूसरे स्तर निर्देशिका /*/*/(के लिए /home/user), लेकिन दूर निर्देशिका जिसमें कोई फ़ाइल की प्रतिलिपि हो जाता है पट्टी। यह अधिक सुविधाजनक है क्योंकि आपको माता-पिता को स्पष्ट रूप से सूचीबद्ध नहीं करना है। तुम भी इस्तेमाल कर सकते हैं --prune-empty-dirs --include='*/'बजाय स्तरों की संख्या की गणना की है, लेकिन इस rsync पूरे फाइल सिस्टम पार निर्देशिका का पता लगाने के रूप में यहाँ अव्यावहारिक है, भले ही से कोई भी शामिल नियम कुछ भी बाहर से मिलान कर सकते /etcहैं और /home/user/download

    rsync -a --prune-empty-dirs \
        --include='/*/' --include='/*/*/' \
        --include=/etc/fstab \
        --include='/home/user/download/***' \
        --exclude='*' / bkp
    

1
महान, लेकिन निर्देशिका संरचना को bkp के अंदर कैसे रखा जाए?
रोड्रिगो

मेरा मतलब है, bkp / etc / fstab और bkp / home / user / dowlonad? या हो सकता है / bkp / fstab और bkp / डाउनलोड?
रॉड्रिगो

@ रोड्रिगो मैंने अपना उत्तर संपादित किया है
गिलेस

13

मुझे वास्तव में गिल्स का उत्तर पसंद है, हालांकि, मैं यह जोड़ना चाहूंगा कि निर्देशिका संरचना को संरक्षित करते हुए कई फ़ोल्डरों को सिंक करने की आवश्यकता --relativeविकल्प के साथ संयोजन के रूप में कई स्रोत तर्कों को पारित करने से पूरी होती है।

इस मामले में, हमारे पास कुछ इस प्रकार हो सकते हैं:

rsync -aR /etc/fstab /home/user/download bkp

जो में परिणाम होगा bkp/etc/fstabऔर bkp/home/user/download

इसके बारे में सबसे अच्छी बात यह है कि (मुझे विश्वास है कि rsync v। 2.6.7 के बाद से) हम सार नियंत्रण में कर सकते हैं कि हम निर्देशिका संरचना का कितना हिस्सा रिसीवर पर दोहराना चाहते हैं।
( यहां--relative विकल्प पर प्रलेखन देखें )

इसलिए अगर हमने ऐसा किया है

rsync -aR /home/./user1/download /home/./user2/download bkp

हम साथ समाप्त करेंगे bkp/user1/downloadऔर bkp/user2/download


2

यह भी काम करता है - घुंघराले ब्रेसिज़, अल्पविराम से अलग स्रोतों की सूची।

rsync -vap --progress --stats root@server:{/etc,/root/backups,/home/ultralazer} /mnt/bigdrive

जब आप घुंघराले ब्रेसिज़ sytnax को cp और कुछ अन्य उपयोगिताओं से जोड़ते हैं, तो कुछ ऐसा ही होता है:

cp -vr /etc /root/backups /home/{ultralazer,zerocool} /mnt/bigdrive

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