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


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

मेरी समझ निम्नानुसार है:

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

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

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

तो, मैं क्या सोच रहा हूं:

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

75
2017-12-09 20:15


मूल




जवाब:


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

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

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

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

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

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


83
2017-12-09 23:41



मुझे मिल गया है --checksum साथ उपयोगी --itemize-changes बैकअप सत्यापित करने के लिए। वर्तमान दैनिक / साप्ताहिक अपडेट पूर्ण होने के बाद हर बार मेरी बैकअप स्क्रिप्ट पूरी तरह से तुलना करती हैं। अगर मैं तत्काल चिह्नित एक ईमेल गिरा दिया गया है --itemize-changes अप्रत्याशित कुछ भी आउटपुट करता है, इसलिए मुझे पता है कि एक संभावित समस्या है जिसे मुझे देखना चाहिए। - David Spillett
- गिट में काम करते समय और बदले गए फाइलों के साथ शाखाओं के बीच स्विच करते समय चेकचेस उपयोगी होता है, जो उन फ़ाइलों पर अद्यतन समय बदलता रहता है जिन्हें आप किसी विशेष शाखा से भेजने का इरादा नहीं रखते हैं। - FriendlyDev
--ignore-times और विशेष रूप से --checksum यदि आपकी "फाइल" में से एक एक ट्रूक्रिप्ट फ़ाइल कंटेनर है, तो डिफ़ॉल्ट रूप से फ़ाइल के टाइमस्टैम्प को अपडेट नहीं किया जाता है। देख productforums.google.com/forum/#!topic/drive/gnmDp3UXEgs तथा ask-leo.com/why_wont_my_truecrypt_volume_backup.html - Marcus Junius Brutus
नोट: मैंने एक त्वरित प्रयोग किया है, और सीटा की तुलना नहीं की जाती है, केवल mtime। मैक पर, कम से कम। यह जानना उपयोगी हो सकता है। यही कारण है कि मेरे पास विंडोज़ फाइल सिस्टम के साथ बहुत सारे मुद्दे हैं, जो एटिम, एमटाइम और सीटाइम के लिए एक ही समय (सीटाइम) की रिपोर्ट करते हैं। - Edward Falk
कर देता है --checksum चेकसम केवल गंतव्य मशीन या गंतव्य निर्देशिका में सभी फाइलों पर स्रोत फ़ाइल नाम? - Greg


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


13
2017-07-24 08:37





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

इसके अलावा, अगर आपके पास बड़ी फाइलें हैं, तो आप के साथ टाइमआउट में भाग लेने की संभावना है --checksum, जैसा कि आप के साथ नहीं है -I


4
2018-06-03 14:43





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


2
2017-12-09 20:34



यह वाक्य मेरे मैन पेजों में प्रतीत नहीं होता है ... इसलिए, यह दर्शाता है कि चेकसम विकल्प चेकसम का उपयोग करेगा यह पहचानने के लिए कि फाइलें समान हैं या नहीं, और यदि वे नहीं हैं तो यह स्थानांतरित हो जाएगी, इस प्रकार चेकसम को फिर से उत्पन्न करना होगा स्थानांतरण का हिस्सा? --Ignore-times विकल्प सिर्फ चेक को छोड़ देता है और मानता है कि वे बदल गए हैं? इसलिए प्रदर्शन-वार --ignore-times एक ही चीज़ को प्राप्त करने का एक बेहतर तरीका है? मैं अभी भी यह देखने के लिए संघर्ष कर रहा हूं कि 2 अलग-अलग विकल्प क्यों हैं (तथ्य यह है कि - चेक्सम अधिक पारदर्शी है) - Andy Madge
आपको नवीनतम दस्तावेज़ीकरण संपादन को देखना चाहिए: gitweb.samba.org/... - Aleksandr Levchuk


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

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

के लिये --ignore-times:

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

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

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


2
2017-12-09 22:22



मुझे पता है तुम्हारा क्या मतलब है। मैं कुछ परीक्षण चलाऊंगा और वापस पोस्ट करूंगा। - Andy Madge