क्या कोई मेरे लिए इस rsync आदेश की व्याख्या कर सकता है?


11

क्या कोई मुझे बता सकता है कि यह क्या करता है?

rsync -uva --delete /srv/bkp01 /srv/offbk2/ > ~/offbkp01.log

क्या यह हटाता है bkp01और offbk2एक लॉग भेजता है offbkp01.log?


वह मानव-पृष्ठ नहीं पढ़ सकता। आपको क्या लगता है कि वह यहाँ उत्तर पढ़ रहा है? XD
ट्विंकल

2
जब आपके पास Explhellhell.com/ ... है, तो मैन पेज की आवश्यकता किसे है ! "
टॉम

जवाबों:


33

इसे भागों में विभाजित करने के लिए, दो प्रमुख खंड हैं, इसके बाद एक सारांश और नोट्स हैं:

  • rsyncआदेश:
    rsync -uva --delete /srv/bkp01 /srv/offbk2/
  • rsync कमांड चलाने वाले शेल द्वारा किया गया आउटपुट रिडायरेक्शन:
    rsync-command > ~/offbkp01.log

rsync आदेश:

आधार आदेश:

  • rsync - मुझे लगता है कि यह कोई स्पष्टीकरण की जरूरत है (लेकिन अगर अनुरोध किया जाएगा प्रदान करेगा)।

आदेश विकल्प:

  • -uva - एकल चरित्र विकल्पों का एक सेट, होना (छोटा दिखाया गया लंबा रूप):

    • -u --update- rsync को बताता है कि सभी संशोधनों को केवल उसी गंतव्य पर फ़ाइलों पर लागू होना चाहिए जो एक ही उम्र (और अलग-अलग आकार) हैं या स्रोत पर पुराने से अधिक हैं। यही है, rsync को केवल उस स्रोत से परिवर्तनों पर पास करना चाहिए जो गंतव्य को अद्यतन करेगा , लेकिन इसमें ऐसा कोई परिवर्तन नहीं होना चाहिए जिससे गंतव्य फ़ाइल पुराना संस्करण बन जाए।

      कुछ अपवाद हैं। प्रकार में अंतर (जैसे, एक फ़ाइल है, दूसरा एक निर्देशिका है) तारीखों की परवाह किए बिना एक अद्यतन का कारण होगा। Symlinks और अन्य विशेष फाइलें इस विकल्प को अनदेखा करती हैं। और, महत्वपूर्ण बात, यह प्रभावित नहीं करता है कि कौन सी फाइलें डिलीट हो जाती हैं।

    • -v --verbose- निष्पादित करते समय rsync जानकारी की मात्रा को बढ़ाता है। इसके बिना, rsync प्रिंट होगा (लगभग?) कुछ भी नहीं। इस विकल्प के साथ -s, rsync आपको बताएगा कि कौन सी फाइलें स्थानांतरित की जा रही हैं, और अंत में एक सारांश रखें। अधिक vs मुद्रित जानकारी को बढ़ाता है, हालाँकि मैन पेज कहता vहै कि डीबगिंग करते समय केवल दो से अधिक का उपयोग किया जाना चाहिए।
    • -a --archive- यह एक -rlptgDसाथ पैक किए गए कई अन्य विकल्पों ( ) के बराबर है । जैसा कि लंबे नाम से पता चलता है, यह फ़ाइलों और निर्देशिकाओं के संग्रह के लिए कई सामान्य विकल्पों को सेट करने का एक त्वरित तरीका है। यह:
      • -r --recursive- पुनरावर्ती निर्देशिकाओं को कॉपी करने के लिए rsync बताता है। इसके बिना, या अधिक विशेष -d --dirsविकल्प के साथ, rsync बस किसी भी निर्देशिका को छोड़ देगा, जो इसका सामना किया है (और आपको इसके आउटपुट में इसके बारे में बताएगा)।
      • -l --links- जब स्रोत एक सिम्लिंक होता है, तो गंतव्य पर एक सिमलिंक बनाएं। अन्य विकल्पों के आधार पर, सहानुभूति अन्यथा छोड़ी जा सकती है या पूर्ण पृथक प्रतिलिपि में बनाई जा सकती है (यानी, सामग्री के साथ एक सच्ची निर्देशिका (या फ़ाइल की दूसरी प्रति) सिम्कलिन के बजाय)।
      • -p --perms - गंतव्य फ़ाइलों की अनुमतियों को स्रोत फ़ाइलों के समान सेट करता है।
      • -t --times- गंतव्य फ़ाइलों के संशोधन समय को स्रोत फ़ाइलों के समान सेट करता है। चूंकि इन समयों को सिंक में रखने से rsync एल्गोरिथम अधिक कुशल हो जाता है, आप आमतौर पर हमेशा इसका उपयोग स्पष्ट रूप से या अंतर्निहित रूप से करना चाहते हैं।
      • -g --group- गंतव्य की समूह विशेषता को स्रोत के समान सेट करता है। डिफ़ॉल्ट रूप से नाम से सहयोगी, लेकिन कुछ परिस्थितियों में समूह आईडी नंबर पर वापस आ जाएगा। यदि प्राप्त करने वाली rsync को सुपर-उपयोगकर्ता के रूप में नहीं चलाया जाता है (या इसके साथ फ़ेकिंग --fake-super), केवल समूह जो उपयोगकर्ता को प्राप्त पक्ष पर rsync को आमंत्रित करते हैं, उन्हें सेट किया जा सकता है। अन्यथा, समूह केवल उसी उपयोगकर्ता के डिफ़ॉल्ट समूह पर सेट किया जाएगा जो पहले उल्लेख किया गया है।
      • -D- विकल्पों के समतुल्य --devicesऔर --specialsएक साथ। उनका अर्थ है:
        • --devices- चरित्र और ब्लॉक डिवाइस फ़ाइलों को स्थानांतरित कर रहे हैं। अगर कोई प्रभाव नहीं है प्राप्त rsync सुपर उपयोगकर्ता (या से faking के रूप में चलाने नहीं है --fake-super)।
        • --specials - विशेष फाइलें (जैसे सॉकेट) स्थानांतरित की जाती हैं (वे अन्यथा नहीं होंगी)।
  • --delete- गंतव्य पर मौजूद फ़ाइलों को हटाने के लिए rsync को बताता है, लेकिन स्रोत पर नहीं। यह ऊपर दिए गए अद्यतन विकल्प से प्रभावित नहीं है (वास्तव में, यह कैसे हो सकता है क्योंकि अधिकांश फ़ाइल-सिस्टम आवश्यक डेटा को बनाए रखने के लिए नहीं देख पाएंगे कि कौन सी कार्रवाई नई थी?)। यह विकल्प वाइल्डकार्ड / ग्लोब विस्तार के बाद स्रोतों पर कार्य करता है , इसलिए dir / * dir / के समान नहीं है। कुछ महत्वपूर्ण नोट:
    • यह, जाहिर है, खतरनाक है। आपको संभवतः इसे --dry-runपहले विकल्प के साथ आज़माना चाहिए , जो एक बहाना हस्तांतरण करेगा जो आपको यह सुनिश्चित करने की अनुमति देता है कि कोई अनपेक्षित परिवर्तन नहीं किया गया है।
    • यदि कोई I / O (इनपुट / आउटपुट) त्रुटियां हैं - यानी, अगर कुछ भी गलत ट्रांसफर, रीडिंग या लेखन परिवर्तन हो जाता है - तो उस बिंदु से हटा दिया जाएगा। यह --ignore-errorsविकल्प के साथ ओवरराइड किया जा सकता है , हालांकि आप शायद ऐसा नहीं करना चाहते।
    • डिलीट एल्गोरिदम पर कई बदलाव हैं, जिसके बारे में आप मैन पेज में अधिक पढ़ सकते हैं। जब rsync प्राप्त होता है तो संस्करण 3.0.0 या नया (इस लेखन के समय के अनुसार) --delete-duringएल्गोरिथ्म का उपयोग किया जाता है। यदि रिसीवर अधिक पुराना है, तो --delete-beforeइसका उपयोग किया जाता है। यदि यह महत्वपूर्ण है कि फ़ाइलें एक निश्चित प्रकार की स्थिरता बनाए रखें तो एक त्रुटि उत्पन्न होनी चाहिए (जैसे कि अन्य सभी परिवर्तन किए जाने तक कुछ भी नहीं हटाना), आपको डिफ़ॉल्ट से अधिक विशिष्ट विकल्प का उपयोग करना चाहिए।

कमांड स्थान:

  • /srv/bkp01- स्रोत फ़ाइल या निर्देशिका। अगर इसका अर्थ है कि निर्देशिका के अंत में कोई स्लैश नहीं है, और यदि अन्य निर्देशिका मौजूद है, तो इसके बारे में कुछ विस्तृत नियम हैं। आप विवरण के लिए मैन पेज का उपयोग अनुभाग देख सकते हैं , लेकिन यहां एक अनुगामी स्लैश की कमी का अर्थ है कि यह निर्देशिका गंतव्य में कॉपी की जाएगी, बजाय इस निर्देशिका की सामग्री को गंतव्य में कॉपी किए। अगर यह एक निर्देशिका के बजाय एक फाइल है।
  • /srv/offbk2/- गंतव्य निर्देशिका। सामान्य तौर पर, यह हमेशा rsync कमांड सेक्शन में सूचीबद्ध अंतिम आइटम होगा जब तक कि विकल्प को कमांड में कहीं और निर्दिष्ट करने के लिए उपयोग नहीं किया जाता है।

शेल का आउटपुट पुनर्निर्देशन:

शैल आदेश:

  • >- यह रीडायरेक्ट (मानक आउटपुट) जो कुछ भी बाईं ओर से दाईं ओर फ़ाइल में है, उसकी सामग्री बन जाता है और यदि यह पहले से मौजूद नहीं है तो फ़ाइल (यदि संभव हो तो) का निर्माण करता है। कुछ नोट:
    • आप ऊपर दिए गए कमांड के बहुत अंत में जोड़कर stderr (मानक त्रुटि आउटपुट) को उसी फ़ाइल में रीडायरेक्ट कर सकते हैं 2>&1। आदेश महत्वपूर्ण है, इसलिए सामान्यीकरण करें कि उसे कहां रखा जाए। मैजिक नंबर 1stdout को 2संदर्भित करता है, Stderr को संदर्भित करता है, &(अनिवार्य रूप से) "का पता" है, और पूर्ण कमांड स्निपेट का अर्थ है "stderr के आउटपुट को stdout स्ट्रीम में पुनर्निर्देशित करें"।
    • यदि आप इसे बदलने के बजाय लॉग फ़ाइल में जोड़ना चाहते हैं, तो आप >>इसके बजाय उपयोग कर सकते हैं । स्टेडर को एक ही स्थान पर पुनर्निर्देशित करने की विधि समान है।
    • आप का उपयोग करके विभिन्न स्थानों पर stdout और stderr भेज सकते हैं 1> stdout_file 2> stderr_file। आप उस आदेश के >>स्थान पर उपयोग कर सकते >हैं ऐसा करने के बजाय प्रतिस्थापित करके।

शैल चर / विशेष प्रतीक:

  • ~ - यह वर्तमान उपयोगकर्ता के घर निर्देशिका के लिए आशुलिपि है, और अगले बिट का हिस्सा बनता है।

शैल-स्तरीय स्थान:

  • ~/offbkp01.log- फ़ाइल वर्तमान उपयोगकर्ता के घर निर्देशिका के अंदर offbkp01.log। यह वह जगह है जहाँ rsync कमांड के आउटपुट को पुनर्निर्देशन के कारण रखा जाएगा >

सारांश:

संक्षेप में, यह आदेश होगा:

  • सभी नियमित फ़ाइलों, निर्देशिकाओं, सिम्लिंक, विशेष फ़ाइलों और डिवाइस फ़ाइलों की प्रतिलिपि बनाएँ
  • और साथ ही साथ , यदि सभी महत्वपूर्ण फ़ाइल विशेषताएँ नहीं हैं ,
  • से /srv/bkp01 ,
  • को /srv/offbk2/bkp01 ,
  • और यह उन स्थितियों में से कुछ भी /srv/offbk2/नहीं हटाएगा/srv/bkp01 , जो निम्नलिखित शर्तों के साथ हैं:

    • यदि एक नियमित फ़ाइल, निर्देशिका, या सिमलिंक (?) पर एक संशोधन समय है , /srv/offbk2/ जो उसके संशोधन समय की तुलना में नया है /srv/bkp01, तो इसे अपडेट नहीं किया जाएगा , यदि दोनों आइटम अभी भी एक ही प्रकार (नियमित फ़ाइल, निर्देशिका, या सिमलिंक हैं) ))।
  • इसके अतिरिक्त, rsync इस बारे में कुछ जानकारी प्रिंट करेगा कि यह क्या कर रहा है (विशेष रूप से, कौन सी फाइलें स्थानांतरित की जा रही हैं, और एक अंतिम सारांश ), जिसे शेल फाइल में लिख देगा~/offbkp01.log । यदि यह फ़ाइल पहले से मौजूद नहीं है, तो लॉग फ़ाइल बनाई जाएगी और यदि यह पहले से मौजूद है तो इसे अधिलेखित कर दिया जाएगा।


NB: --fake-superएक विकल्प है जिसका उपयोग rsync को सुपर-उपयोगकर्ता गतिविधियों का अनुकरण करने के लिए किया जाता है। यह फाइल की विस्तारित विशेषताओं का उपयोग करके ऐसा करता है कि यह उन विशेषताओं को संग्रहीत करने के लिए है जिन्हें अधिक विशेषाधिकार के बिना सेट नहीं किया जा सकता है। प्रत्येक विशेषता का वास्तविक संस्करण जो कुछ भी समझ में आता है, वह विकल्प और विशेषाधिकार उपलब्ध कराता है। यद्यपि यह सुपर-उपयोगकर्ता विशेषाधिकारों के बावजूद कुछ बैकअप बनाने के लिए सुविधाजनक बनाता है, किसी को यह भी ध्यान रखना चाहिए कि यह सामान्य रूप से rsync के उपयोग से अधिक सुरक्षा जोखिम पैदा कर सकता है, क्योंकि वास्तविक सुरक्षा विशेषताओं को सेट नहीं किया जा सकता है। ठीक से, भले ही उनके बारे में जानकारी का बैकअप लिया गया था।


स्रोत: rsync के साथ काम करने और इसके मैन-पेज को पढ़ने में बहुत समय ।


8
यह एक प्रभावशाली पहली पोस्ट है। आशा है कि आप चारों ओर चिपकेंगे!
टेराडॉन

मैं दूसरा @terdon .. धिक्कार है! वह आग पर है। अच्छा काम जारी रखो साथी। यह वास्तव में एक प्रभावशाली जवाब है।
अज़करम

जवाब "शर्लक होम्स" की तरह लगता है, मुझे आपकी व्याख्या शैली बहुत पसंद है ..
राहुल पाटिल

9

मैनुअल से:

--delete

यह rsync को रिसीरिंग फाइल्स को रिसीविंग साइड (जो कि सेंडिंग साइड पर नहीं हैं) से डिलीट करने के लिए कहता है, लेकिन केवल उन डायरेक्ट्रीज़ के लिए जिन्हें सिंक किया जा रहा है। आपको पूरी निर्देशिका भेजने के लिए rsync को haveasked करना चाहिए (जैसे कि "dir" या "dir /") निर्देशिका की सामग्री के लिए वाइल्डकार्ड का उपयोग किए बिना (जैसे "dir / *") क्योंकि वाइल्डकार्ड शेल द्वारा विस्तारित है और rsync इस प्रकार अनुरोध करता है व्यक्तिगत फ़ाइलों को स्थानांतरित करने के लिए, फाइलों की मूल निर्देशिका नहीं। स्थानांतरण से बाहर रखी गई फ़ाइलों को भी हटाए जाने से बाहर रखा गया है जब तक कि आप --delete- बहिष्कृत विकल्प का उपयोग नहीं करते हैं या केवल भेजने वाले पक्ष के मिलान के रूप में नियमों को चिह्नित करते हैं (फ़िल्टर नियम अनुभाग में शामिल / बहिष्कृत संशोधक देखें)।

तो यह उन फ़ाइलों को गंतव्य से हटा देगा जो मूल निर्देशिका का हिस्सा नहीं हैं यदि आपने वाइल्डकार्ड का उपयोग नहीं किया है।

स्रोत निर्देशिका:

1.txt
2.txt
3.txt

गन्तव्य निर्देशिका:

4.txt

4.txt rsync के बाद चला जाएगा और 1.txt, 2.txt और 3.txt गंतव्य पर होगा।


अन्य चीजों के बारे में:

uva
  • फ़ाइलों को अद्यतन करें
  • वर्बोज़: टर्मिनल के लिए प्रतिध्वनित होता है (यानी इसे आपकी लॉग फ़ाइल में रीडायरेक्ट करता है ताकि अंतिम प्रश्न पर हाँ)
  • संग्रह: संग्रह मोड; बराबर- surptgoDD (no -H, -A -X)


3

नहीं, यह केवल bkp01निर्देशिका से बाहरी फ़ाइलों को हटाता है ।

इसके अलावा:

  • -u, --update- रिसीवर पर नई हैं कि फ़ाइलों को छोड़ दें
  • -v, --verbose- वर्बोसिटी बढ़ाना
  • -a, --archive- संग्रह मोड; बराबर- surptgoDD (no -H, -A -X)

rsync -uva --delete /srv/bkp01 /srv/offbk2/कमांड का आउटपुट आपके टर्मिनल में प्रिंट होने के बजाय रिडायरेक्शन ऑपरेटर ( )~/offbkp01.log का उपयोग करके फ़ाइल में भेजा जाता है । यदि फ़ाइल मौजूद नहीं है तो इसे बनाया जाएगा। यदि फ़ाइल मौजूद है, तो पुरानी सामग्री को मिटा दिया जाएगा।>

man rsyncअधिक जानकारी के लिए देखें ।


3
यह कुछ भी नहीं हटाता है bkp01। यह केवल बाहरी फ़ाइलों को हटाता है - यानी जो गंतव्य में मौजूद स्रोत में मौजूद नहीं हैं।
मैट नॉर्डहॉफ

Bkp01 से कोई भी फाइल डिलीट नहीं होगी।
जेवियर जे

1
rsync 

रिमोट फाइल कॉपी - स्थानीय डिस्क, निर्देशिका या एक नेटवर्क में फ़ाइल पेड़ों को सिंक्रनाइज़ करें।

-u update 

-v verbose

-a archive


--delete --> delete

यहाँ यह offbk2 के अंदर की फाइल्स को डिलीट कर देगा

तब परिणाम का परिणाम (सफलता या नहीं) उस लॉग फ़ाइल पर पुनर्निर्देशित किया जाएगा।


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