Rsync लॉग में f ++++++++++ का क्या मतलब है?


116

मैं rsyncअपनी सर्वर फ़ाइलों का बैकअप बनाने के लिए उपयोग कर रहा हूं , और मेरे दो प्रश्न हैं:

  1. प्रक्रिया के बीच में मुझे रोकने और फिर rsyncसे शुरू करने की आवश्यकता है । उस बिंदु से शुरू
    होगा rsyncजहां यह रुका था या यह शुरुआत से फिर से शुरू होगा?

  2. लॉग फ़ाइलों में मैं देख रहा हूँ "f+++++++++"। इसका क्या मतलब है?

उदाहरण के लिए:

2010/12/21 08:28:37 [4537] >f.st...... iddd/logs/website-production-access_log
2010/12/21 08:29:11 [4537] >f.st...... iddd/web/website/production/shared/log/production.log
2010/12/21 08:29:14 [4537] .d..t...... iddd/web/website/production/shared/sessions/
2010/12/21 08:29:14 [4537] >f+++++++++ iddd/web/website/production/shared/sessions/ruby_sess.017a771cc19b18cd
2010/12/21 08:29:14 [4537] >f+++++++++ iddd/web/website/production/shared/sessions/ruby_sess.01eade9d317ca79a

जवाबों:


196

आइए नज़र डालते हैं कि rsync कैसे काम करता है और क्रिप्टिक परिणाम लाइनों को बेहतर ढंग से समझता है:

1 - rsync का एक बड़ा फायदा यह है कि एक व्यवधान के बाद अगली बार यह आसानी से जारी रहता है।

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

2 - प्रत्येक चरित्र एक कोड है कि अनुवाद किया जा सकता है, तो आप के लिए अनुभाग पढ़ें है -i, --itemize-changesमेंman rsync

प्रश्न से अपनी उदाहरण लॉग फ़ाइल को डिकोड करना:

> F.st ......

> - the item is received
f - it is a regular file
s - the file size is different
t - the time stamp is different

.d..t ......

. - the item is not being updated (though it might have attributes 
    that are being modified)
d - it is a directory
t - the time stamp is different

> च +++++++++

> - the item is received
f - a regular file
+++++++++ - this is a newly created item

Rsync मैन पेज का प्रासंगिक हिस्सा:

-i, - परिवर्तन-परिवर्तन

प्रत्येक फ़ाइल में किए जा रहे परिवर्तनों की एक साधारण आइटम सूची में अनुरोध करता है, जिसमें विशेषता परिवर्तन भी शामिल हैं। यह ठीक-ठीक निर्दिष्ट है --आउट-स्वरूप = '% i% n% L'। यदि आप विकल्प दोहराते हैं, तो अपरिवर्तित फाइलें भी आउटपुट होंगी, लेकिन केवल अगर प्राप्त करने वाला rsync कम से कम संस्करण 2.6.7 है (आप rsync के पुराने संस्करणों के साथ -vv का उपयोग कर सकते हैं, लेकिन यह भी अन्य वर्बस मेस के आउटपुट को चालू करता है) संतों)।

"% I" एस्केप में एक क्रिप्टिक आउटपुट है जो 11 अक्षर लंबा है। सामान्य प्रारूप स्ट्रिंग YXcstpoguax की तरह है, जहां Y को अपडेट किए जाने के प्रकार से बदल दिया जाता है, X को फ़ाइल-प्रकार से बदल दिया जाता है, और अन्य अक्षर उन विशेषताओं का प्रतिनिधित्व करते हैं जो आउटपुट हो सकते हैं यदि वे संशोधित किए जा रहे हैं।

वाई को बदलने वाले अपडेट प्रकार इस प्रकार हैं:

  • ए का <मतलब है कि एक फ़ाइल को दूरस्थ होस्ट (भेजा) में स्थानांतरित किया जा रहा है।
  • ए का >मतलब है कि एक फ़ाइल को स्थानीय होस्ट (प्राप्त) में स्थानांतरित किया जा रहा है।
  • ए का cमतलब है कि आइटम के लिए एक स्थानीय परिवर्तन / निर्माण हो रहा है (जैसे कि एक निर्देशिका का निर्माण या एक सिमलिंक का परिवर्तन, आदि)।
  • ए का hमतलब है कि आइटम किसी अन्य आइटम के लिए एक कड़ी है (आवश्यकता-लिंक)।
  • ए का .मतलब है कि आइटम को अपडेट नहीं किया जा रहा है (हालांकि इसमें ऐसी विशेषताएँ हो सकती हैं जिन्हें संशोधित किया जा रहा है)।
  • ए का *मतलब है कि शेष आइटम-आउटपुट क्षेत्र में एक संदेश शामिल है (उदाहरण के लिए "हटाना")।

फ़ाइल प्रकार जो X को प्रतिस्थापित करते हैं, वे हैं: fएक फ़ाइल के लिए, एक dनिर्देशिका के लिए, Lएक सिमलिंक के लिए, Dएक डिवाइस के लिए, और Sएक विशेष फ़ाइल के लिए (जैसे नाम सॉकेट और फ़िनोस)।

उपरोक्त स्ट्रिंग में अन्य अक्षर वास्तविक अक्षर हैं जो आउटपुट होंगे यदि आइटम के लिए संबंधित विशेषता को अपडेट किया जा रहा है या "।" बिना किसी बदलाव के। इसके तीन अपवाद हैं: (1) एक नव निर्मित वस्तु प्रत्येक अक्षर को "+" के साथ बदल देती है, (2) एक समान वस्तु रिक्त स्थान के साथ डॉट्स को बदल देती है, और (3) एक अज्ञात विशेषता प्रत्येक अक्षर को "" के साथ बदल देती है? (यह पुराने rsync से बात करते समय हो सकता है)।

प्रत्येक अक्षर के साथ जुड़ा हुआ गुण निम्नानुसार है:

  • A का cअर्थ है कि एक नियमित फ़ाइल में एक अलग चेकसम (--checksum की आवश्यकता होती है) या जो कि एक सिमलिंक, डिवाइस या विशेष फ़ाइल का एक परिवर्तित मूल्य है। ध्यान दें कि यदि आप 3.0.1 से पहले किसी rsync पर फ़ाइलें भेज रहे हैं, तो यह परिवर्तन ध्वज केवल चेकसम-अलग-अलग नियमित फ़ाइलों के लिए मौजूद होगा।
  • ए का sमतलब है कि एक नियमित फ़ाइल का आकार अलग है और फ़ाइल स्थानांतरण द्वारा अपडेट किया जाएगा।
  • A का tमतलब है कि संशोधन का समय अलग है और इसे प्रेषक के मूल्य में अपडेट किया जा रहा है (इसके लिए आवश्यकता है)। टी का एक वैकल्पिक मूल्य का मतलब है कि संशोधन का समय हस्तांतरण के समय पर सेट किया जाएगा, जो तब होता है जब कोई फ़ाइल / सिमलिंक / डिवाइस बिना -times के अपडेट किया जाता है और जब एक सिमलिंक को बदल दिया जाता है और रिसीवर अपना समय निर्धारित नहीं कर सकता है। (नोट: rsync 3.0.0 क्लाइंट का उपयोग करते समय, आप इस समय-सेटिंग विफलता के लिए उचित T ध्वज के बजाय t के साथ संयुक्त ध्वज को देख सकते हैं।)
  • ए का pमतलब है कि अनुमतियां अलग-अलग हैं और प्रेषक के मूल्य (आवश्यकताएं - अपडेट) के लिए अपडेट की जा रही हैं।
  • एक oमतलब है कि मालिक अलग है और प्रेषक के मूल्य (आवश्यकता - सुपरर और सुपर-उपयोगकर्ता विशेषाधिकारों) के लिए अद्यतन किया जा रहा है।
  • ए का gमतलब है कि समूह अलग है और प्रेषक के मूल्य में अपडेट किया जा रहा है (आवश्यकता है - समूह और समूह सेट करने का अधिकार)।
  • uस्लॉट भविष्य में उपयोग के लिए आरक्षित है।
  • इसका aमतलब है कि ACL की जानकारी बदल गई है।
  • इसका xमतलब है कि विस्तारित विशेषता जानकारी बदल गई है।

एक अन्य आउटपुट संभव है: फ़ाइलों को हटाते समय, "% i" हटाए जाने वाले प्रत्येक आइटम के लिए स्ट्रिंग "* डिलीट" को आउटपुट करेगा (यह मानते हुए कि आप हाल ही में पर्याप्त rsync से बात कर रहे हैं कि यह उन्हें आउटपुट करने के बजाय हटाने को लॉग करता है। एक क्रिया संदेश)।


यह पोस्ट / उत्तर अभी बहुत पुराना है, लेकिन मुझे इसके बारे में एक टिप्पणी लिखनी थी। क्या मैं rsync के बारे में कभी देखा है सबसे अच्छे उत्तरों में से एक है। धन्यवाद माइट
जोर्ज

101

कुछ समय पहले, मुझे rsyncएक स्क्रिप्ट के लिए आउटपुट को समझने की आवश्यकता थी जो मैं लिख रहा था। उस स्क्रिप्ट को लिखने की प्रक्रिया के दौरान मैंने चारों ओर गुगली की और ऊपर जो @mit लिखा था वह आया । मैंने उस सूचना का उपयोग किया, साथ ही साथ अन्य स्रोतों से दस्तावेज़ीकरण, बिट्स फ़्लैग पर अपना प्राइमर बनाने के rsyncलिए और सभी कार्यों के लिए आउटपुट फ़्लैग बिट्स को कैसे प्राप्त किया जाए (यह डिफ़ॉल्ट रूप से ऐसा नहीं करता है)।

मैं उस जानकारी को यहाँ इस उम्मीद में पोस्ट कर रहा हूँ कि यह दूसरों को (जो मेरे जैसे) खोज के माध्यम से इस पेज पर आने में मदद करती है और इसके बेहतर स्पष्टीकरण की आवश्यकता है rsync

के संयोजन के साथ --itemize-changesझंडा और-vvv ध्वज, rsyncहम सभी फाइल सिस्टम परिवर्तन है कि स्रोत निर्देशिका में पहचान की गई है जब लक्ष्य निर्देशिका की तुलना की विस्तृत उत्पादन देता है। rsyncतब जो झंडे का उत्पादन किया जाता है, उसे यह निर्धारित करने के लिए डिकोड किया जा सकता है कि क्या बदल गया है। प्रत्येक बिट के अर्थ को डीकोड करने के लिए, निम्न तालिका का उपयोग करें।

प्रत्येक बिट स्थिति और rsyncआउटपुट में मूल्य की व्याख्या :

YXcstpoguax  path/to/file
|||||||||||
||||||||||╰- x: The extended attribute information changed
|||||||||╰-- a: The ACL information changed
||||||||╰--- u: The u slot is reserved for future use
|||||||╰---- g: Group is different
||||||╰----- o: Owner is different
|||||╰------ p: Permission are different
||||╰------- t: Modification time is different
|||╰-------- s: Size is different
||╰--------- c: Different checksum (for regular files), or
||              changed value (for symlinks, devices, and special files)
|╰---------- the file type:
|            f: for a file,
|            d: for a directory,
|            L: for a symlink,
|            D: for a device,
|            S: for a special file (e.g. named sockets and fifos)
╰----------- the type of update being done::
             <: file is being transferred to the remote host (sent)
             >: file is being transferred to the local host (received)
             c: local change/creation for the item, such as:
                - the creation of a directory
                - the changing of a symlink,
                - etc.
             h: the item is a hard link to another item (requires 
                --hard-links).
             .: the item is not being updated (though it might have
                attributes that are being modified)
             *: means that the rest of the itemized-output area contains
                a message (e.g. "deleting")

विभिन्न परिदृश्यों के लिए rsync से कुछ उदाहरण आउटपुट:

>f+++++++++ some/dir/new-file.txt
.f....og..x some/dir/existing-file-with-changed-owner-and-group.txt
.f........x some/dir/existing-file-with-changed-unnamed-attribute.txt
>f...p....x some/dir/existing-file-with-changed-permissions.txt
>f..t..g..x some/dir/existing-file-with-changed-time-and-group.txt
>f.s......x some/dir/existing-file-with-changed-size.txt
>f.st.....x some/dir/existing-file-with-changed-size-and-time-stamp.txt 
cd+++++++++ some/dir/new-directory/
.d....og... some/dir/existing-directory-with-changed-owner-and-group/
.d..t...... some/dir/existing-directory-with-different-time-stamp/

कैप्चरिंग rsyncआउटपुट (बिट झंडे पर केंद्रित):

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

इस तकनीक का एक उपयोगी उपयोग --dry-runध्वज को कमांड में जोड़ना और परिवर्तन सूची को इकट्ठा करना है, जैसा कि rsync द्वारा निर्धारित किया गया है, एक चर में (बिना किसी परिवर्तन के) ताकि आप सूची में कुछ प्रसंस्करण स्वयं कर सकें। एक चर में आउटपुट को कैप्चर करने पर निम्न जैसा कुछ होगा:

file_system_changes=$(rsync --archive --acls --xattrs \
    --checksum --dry-run \
    --itemize-changes -vvv \
    "/some/source-path/" \
    "/some/destination-path/" \
| grep -E '^(\.|>|<|c|h|\*).......... .')

ऊपर दिए गए उदाहरण में, (स्टडआउट) आउटपुट को स्टड के माध्यम से rsyncरीडायरेक्ट किया गया है, grepइसलिए हम केवल उन पंक्तियों को अलग कर सकते हैं जिनमें बिट्स फ़्लैग होते हैं।

कैप्चर किए गए आउटपुट को संसाधित करना:

चर की सामग्री को बाद में उपयोग के लिए लॉग इन किया जा सकता है या तुरंत ब्याज की वस्तुओं के लिए पुनरावृत्त किया जा सकता है। इस पटकथा का उपयोग मैं उस पटकथा में करता हूं, जिसके बारे में मैंने और अधिक शोध किया है rsync। आप नई फ़ाइलों को अलग करने के लिए कैप्चर किए गए आउटपुट को पोस्ट-प्रोसेसिंग करने के लिए स्क्रिप्ट ( https://github.com/jmmitchell/movestough ) पर देख सकते हैं , डुप्लिकेट फ़ाइलें (एक ही नाम, एक ही सामग्री), फ़ाइल टकराव (एक ही नाम, अलग-अलग) सामग्री), साथ ही उपनिर्देशिका संरचनाओं में परिवर्तन।


1
बहुत उपयोगी! लॉग आउटपुट में क्या है?
पोल हॉलन

पोल, क्या आप rsync के लिए - T ध्वज के बारे में पूछ रहे हैं?
जॉन मार्क मिशेल

पोल, अगर मैं आपके प्रश्न को सही ढंग से समझता हूं, तो rsync लॉग में t का अर्थ है कि दो फ़ाइलों की तुलना में अलग-अलग टाइमस्टैम्प हैं। मतलब वे अलग-अलग समय पर बनाए गए या संशोधित किए गए।
जॉन मार्क मिशेल

3
मेरा मानना ​​है कि आउटपुट में "टी" का मतलब है कि समय वर्तमान समय में अपडेट किया गया था, "<f..T ...... Rise.mp3"। कम से कम यही तो मैं देख रहा हूं। "t" स्थानीय फ़ाइल का समय होगा।
सी। केली

1
मैं कुछ वर्षों से देर से हूं, लेकिन मैन पेज में "टी" बनाम "टी" को समझाया गया है: ए टी का मतलब है कि संशोधन का समय अलग है और इसे प्रेषक के मूल्य में अपडेट किया जा रहा है (इसके लिए आवश्यकता है)। टी का एक वैकल्पिक मूल्य का मतलब है कि संशोधन का समय हस्तांतरण के समय पर सेट किया जाएगा, जो तब होता है जब कोई फ़ाइल / सिमलिंक / डिवाइस बिना -times के अपडेट किया जाता है और जब एक सिमलिंक को बदल दिया जाता है और रिसीवर अपना समय निर्धारित नहीं कर सकता है। (नोट: rsync 3.0.0 क्लाइंट का उपयोग करते समय, आप इस समय-सेटिंग विफलता के लिए उचित T ध्वज के बजाय t के साथ संयुक्त ध्वज को देख सकते हैं।)
user187557

2

1) वोडिन, यह पूरी तरह से सच नहीं है। अगर --partial या -P टैग (समान- aspartial --progress) का उपयोग कर रहे हैं तो rsync रुके हुए स्थानान्तरण को फिर से शुरू करता है।

2) वास्तव में, --itemize-changes टैग के लिए यह सामान्य आउटपुट है।


2

1.) यह "सिंक को पुनरारंभ करेगा", लेकिन यह फ़ाइलों को स्थानांतरित नहीं करेगा जो समान आकार और टाइमस्टैम्प आदि हैं। यह पहली बार स्थानांतरित करने के लिए फ़ाइलों की एक सूची बनाता है और इस चरण के दौरान यह देखेगा कि यह पहले ही कुछ फ़ाइलों को स्थानांतरित कर चुका है। और उन्हें छोड़ देगा। आपको टाइमस्टैम्प आदि को संरक्षित करने के लिए rsync को बताना चाहिए (उदाहरण के लिए rsync -a ...)

जबकि rsync एक फ़ाइल को स्थानांतरित कर रहा है, यह इसे .filename.XYZABCबदले की तरह कुछ कहेगा filename। फिर जब उसने उस फ़ाइल को स्थानांतरित करना समाप्त कर दिया तो वह उसका नाम बदल देगा। इसलिए, यदि आप rsync को मारते हैं, जबकि यह एक बड़ी फ़ाइल को स्थानांतरित कर रहा है, तो आपको स्क्रैच से शुरू करने के बजाय स्थानांतरण को जारी रखने के लिए --partial विकल्प का उपयोग करना होगा।

2.) मुझे नहीं पता कि वह क्या है। क्या आप कुछ उदाहरण चिपका सकते हैं?

संपादित करें: http://ubuntuforums.org/showthread.php?t=1342171 के अनुसार -i, --itemize-changesविकल्प के लिए अनुभाग में उन कोडों को rsync मैन पेज में परिभाषित किया गया है।

अगर मेरा जवाब जोआओ के आधार पर तय हुआ तो


मैंने कुछ लॉग उदाहरण ऊपर दिए हैं। धन्यवाद।
गॉडफादर

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