- चेकस्सम और --ignore-times विकल्पों के बीच रुपये का अंतर


95

क्या rsync के विकल्पों --checksumऔर --ignore-timesविकल्पों के बीच अंतर स्पष्ट कर सकता है ?

मेरी समझ इस प्रकार है:

--checksum
यदि फ़ाइल का आकार और समय मेल खाता है, तो यह देखने के लिए दोनों सिरों पर एक चेकसम करेगा कि क्या फाइलें वास्तव में समान हैं।

--ignore-times
हर फाइल को 'ट्रांसफर' कर दें, भले ही फाइल का समय दोनों छोर पर समान हो। चूंकि यह अभी भी डेल्टा-ट्रांसफर एल्गोरिथ्म का उपयोग करेगा, अगर वास्तव में एक फ़ाइल समान है, तो कुछ भी स्थानांतरित नहीं होता है।

यह तकनीकी अंतर है, लेकिन जहां तक ​​मैं बता सकता हूं, वे शब्दार्थ रूप से एक ही चीज हैं।

तो, मैं जो सोच रहा हूं वह है:

  • दो विकल्पों के बीच व्यावहारिक अंतर क्या है?
  • किन मामलों में आप एक के बजाय एक का उपयोग करेंगे?
  • क्या उनके बीच कोई प्रदर्शन अंतर है?

जवाबों:


99

आम तौर पर rsyncजब फाइलें स्रोत और गंतव्य पक्षों पर समान आकार और समय होती हैं, तो फाइलें रोक देती हैं। यह एक अनुमान है जो आमतौर पर एक अच्छा विचार है, क्योंकि यह rsyncउन फ़ाइलों की सामग्री की जांच करने से रोकता है जो स्रोत और गंतव्य पक्षों पर बहुत समान हैं।

--ignore-timesrsyncफ़ाइल-बार-और-आकार-आकार को बंद करने के लिए कहता है, और इस प्रकार बिना किसी स्रोत के गंतव्य से सभी फ़ाइलों को बिना किसी हस्तांतरण के। rsyncतब स्रोत की ओर से प्रत्येक फ़ाइल को पढ़ने के लिए आगे बढ़ेंगे, क्योंकि इसे या तो अपने डेल्टा-ट्रांसफर एल्गोरिथ्म का उपयोग करने की आवश्यकता होगी, या --whole-fileविकल्प को निर्दिष्ट करने के आधार पर हर फाइल को उसकी संपूर्णता में भेजना होगा ।

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

उन मामलों में जहां स्रोत और गंतव्य पक्ष ज्यादातर समान होते हैं, --checksumपरिणामस्वरूप अधिकांश फाइलों को दोनों तरफ से चेक किया जाएगा। यह लंबे समय तक ले सकता है, लेकिन अपशॉट यह है कि डेटा का सबसे न्यूनतम न्यूनतम वास्तव में तार के ऊपर स्थानांतरित किया जाएगा, खासकर अगर डेल्टा-ट्रांसफर एल्गोरिथ्म का उपयोग किया जाता है। बेशक, यह केवल एक जीत है यदि आपके पास बहुत धीमा नेटवर्क है, और / या बहुत तेज सीपीयू है।

--ignore-timesदूसरी ओर, नेटवर्क पर अधिक डेटा भेजेगा, और यह सभी स्रोत फ़ाइलों को पढ़ने का कारण बनेगा, लेकिन कम से कम यह स्रोत और गंतव्य सीपीयू पर कई क्रिप्टोग्राफिक रूप से मजबूत हैशटैग की गणना का अतिरिक्त बोझ नहीं डालेगा। मैं इस विकल्प की अपेक्षा करूँगा कि --checksumजब आपके नेटवर्क तेज़ हों, और / या आपका CPU अपेक्षाकृत धीमी गति से बेहतर प्रदर्शन करे ।

मुझे लगता है कि मैं केवल कभी उपयोग करूंगा --checksumया --ignore-timesयदि मैं फ़ाइलों को एक गंतव्य पर स्थानांतरित कर रहा हूं, जहां यह संदेह था कि कुछ फ़ाइलों की सामग्री दूषित हो गई थी, लेकिन जिनके संशोधन के समय को नहीं बदला गया था। मैं वास्तव में या तो विकल्प का उपयोग करने के लिए किसी अन्य अच्छे कारण के बारे में नहीं सोच सकता, हालांकि संभवतः अन्य उपयोग-मामले हैं।


12
मैंने बैकअप सत्यापित करने के लिए --checksumउपयोगी पाया है --itemize-changes। वर्तमान दैनिक / साप्ताहिक अपडेट पूर्ण होने के बाद हर अब और फिर से मेरी बैकअप स्क्रिप्ट इस तरह से पूर्ण तुलना करती हैं। मैं एक ईमेल को तत्काल चिह्नित --itemize-changesकर देता हूं, अगर कुछ भी अप्रत्याशित होता है, तो मुझे पता है कि एक संभावित समस्या है जिस पर मुझे गौर करना चाहिए।
डेविड स्पिललेट

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

6
--ignore-timesऔर विशेष रूप --checksumसे आवश्यक है यदि आपकी "फाइल" में से एक Truecrypt फ़ाइल कंटेनर है क्योंकि डिफ़ॉल्ट रूप से फ़ाइल का टाइमस्टैम्प अपडेट नहीं किया गया है। देखें productforums.google.com/forum/#!topic/drive/gnmDp3UXEgs और ask-leo.com/why_wont_my_truecrypt_volume_backup.html
मार्कस जुनिउस ब्रूटस

नोट: मैंने एक त्वरित प्रयोग किया, और समय की तुलना नहीं की गई है, केवल माइम। मैक पर, कम से कम। यह जानना उपयोगी हो सकता है। यही कारण है कि मेरे पास विंडोज फ़ाइल सिस्टम के साथ बहुत सारे मुद्दे हैं, जो एटिमा, माइम और समय के लिए एक ही समय (समय) की रिपोर्ट करते हैं।
एडवर्ड फॉक

क्या --checksumचेकसम केवल गंतव्य फ़ाइल या गंतव्य निर्देशिका में सभी फ़ाइलों पर स्रोत फ़ाइल नाम है?
ग्रेग

16

चेकसम उपयोगी भी है यदि आप फ़ाइलों को सिंक करने के लिए किसी अन्य सिस्टम का उपयोग कर रहे हैं, जिसने टाइमस्टैम्प संरक्षित नहीं किया है। चेकसम केवल अलग-अलग फ़ाइलें करेगा जो अलग-अलग हैं और प्राप्त समय पर सभी टाइमस्टैम्प को अपडेट करते हैं ताकि वे मेल खाते हों


4

एक विवरण: चेकसम विकल्प एक छोर पर पूरी फ़ाइल की जाँच करता है, फिर दूसरी छोर पर पूरी फ़ाइल। यदि आपकी फाइलें कुछ बड़ी हैं, तो इस तरह की समानताएं मार देती हैं।

इसके अलावा, यदि आपके पास बहुत बड़ी फाइलें हैं, तो आप सबसे अधिक समय के साथ चलने की संभावना रखते हैं --checksum, जैसा कि आप नहीं करते हैं -I


2

से info rsyncकरने के संबंध में --checksumविकल्प - "जब से कनेक्शन के दोनों किनारों पर सभी फ़ाइलों की इस पूरी फाइल checksumming स्वत: चेकसम सत्यापन कि एक फ़ाइल के स्थानांतरण के दौरान होने के अलावा में होता है, तो यह विकल्प काफी धीमी गति से हो सकता है।"


1
यह वाक्य मेरे मैन पेजों में नहीं लगता ... इसलिए, क्या इसका मतलब यह है कि चेकसम विकल्प चेकसम का उपयोग करेगा कि क्या यह पता लगाने के लिए कि फाइलें समान हैं, और यदि वे इसे स्थानांतरित नहीं करेंगे, तो इस तरह चेकसम उत्पन्न करना। ट्रांसफर का हिस्सा? --Ignore- बार विकल्प सिर्फ चेक को छोड़ देता है और मान लेता है कि वे बदल गए हैं? इसलिए प्रदर्शन-वार --ignore-times एक ही चीज़ को प्राप्त करने का एक बेहतर तरीका है? मैं अभी भी क्यों 2 विभिन्न विकल्पों (अलग तथ्य यह है कि --checksum अधिक पारदर्शी है से) कर रहे हैं देखने के लिए संघर्ष कर रहा हूँ
एंडी मैज

आपको नवीनतम दस्तावेज़ को देखना चाहिए: gitweb.samba.org/…
Aleksandr Levchuk

2

--ignore-timesविकल्प शायद सभी फाइलों को डेल्टा इनकोडिंग और डेल्टा-हस्तांतरण एल्गोरिथ्म (डेल्टा एन्कोडिंग) में परिणाम होगा checksumming के रूप में कम से कम के रूप में धीमी है।

मुझे नहीं पता कि rsync --ignore-timesपर्याप्त स्मार्ट है ताकि "ऑटो आफ्टर-द-ट्रांसफर वेरिफिकेशन" से बचने के लिए लगातार मामले में जब डेल्टा-ट्रांसफर का परिणाम होगा कि कुछ भी ट्रांसफर न हो।

के लिए --ignore-times:

  • यदि rsync स्मार्ट नहीं है (या डेल्टा एन्कोडिंग पर भरोसा नहीं करता है) तो चेकिंग (चेकसमिंग और एन्कोडिंग) दो बार किया जाएगा।
  • यह भी मामला हो सकता है कि डेल्टा एन्कोडिंग 128-बिट एमडी 4 चेकसमिंग की तुलना में बहुत धीमी है।

दोनों --checksumऔर --ignore-times"काफी धीमी गति से होगा" लेकिन --ignore-times(ऊपर 2 संभावनाओं के कारण) भी धीमी होने की संभावना है।

अच्छा प्रश्न - कृपया पोस्ट करें यदि आपको अभ्यास में कोई प्रदर्शन अंतर दिखाई देता है।


मुझे पता है तुम्हारा क्या मतलब है। मैं कुछ परीक्षण चलाऊंगा और वापस पोस्ट करूंगा।
एंडी मैज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.