विहित उत्तर
के बारे में rdiff पोस्ट, 2.0.1 librsync
एक अच्छा आदेश कार्यक्षमता स्पष्टीकरण के लिए पढ़ा तो मैं संदर्भित किया है कि इस सवाल का जवाब और कुछ नहीं करता है, तो करने के लिए सामग्री को बचाने के लिये नीचे।
यह आवश्यक है कि किसी फाइल को अपडेट करने के लिए rdiff के तीन चरणों की अच्छी समझ प्राप्त करें: rdiff मैन पेज पर बात की गई हस्ताक्षर , डेल्टा और पैच । मुझे rdiff
GitHub पर एक कमांड उदाहरण स्क्रिप्ट भी मिली है जो सहायक है जिसे मैं संदर्भ और उद्धरण दूंगा।
अनिवार्य रूप से ...
- के साथ एक "शुरू करने" या आधार फ़ाइल [
file1
] और आप एक बनाने के हस्ताक्षर फ़ाइल से
- यह आमतौर पर आधार / मूल फ़ाइल की तुलना में बहुत छोटा होता है
- साथ हस्ताक्षर फ़ाइल आप इसे किसी अन्य फ़ाइल [खिलाफ तुलना
file2
] अपने आधार फाइल करने के लिए समान है, लेकिन अलग ( जैसे हाल ही में अद्यतन ) और एक बनाने के डेल्टा फ़ाइल दो फ़ाइलों के बीच सिर्फ मतभेद युक्त
- "अंतर केवल" या डेल्टा फ़ाइल का उपयोग करें और दोनों के साथ मेल खाने वाली
file1
अन्य फ़ाइल [ file2
] से बदलाव वाली एक नई फ़ाइल उत्पन्न करने के लिए अपनी आधार फ़ाइल [ ] से तुलना करें ।
rdiff signature file1 signature-file ## signature base file1
rdiff delta signature-file file2 delta-file ## delta differences file2
rdiff patch file1 delta-file gen-file ## compare delta to file1 to create matching file2
rdiff-example.sh
# $ rdiff --help
# Usage: rdiff [OPTIONS] signature [BASIS [SIGNATURE]]
# [OPTIONS] delta SIGNATURE [NEWFILE [DELTA]]
# [OPTIONS] patch BASIS [DELTA [NEWFILE]]
# Options:
# -v, --verbose Trace internal processing
# -V, --version Show program version
# -?, --help Show this help message
# -s, --statistics Show performance statistics
# Delta-encoding options:
# -b, --block-size=BYTES Signature block size
# -S, --sum-size=BYTES Set signature strength
# --paranoia Verify all rolling checksums
# IO options:
# -I, --input-size=BYTES Input buffer size
# -O, --output-size=BYTES Output buffer size
# create signature for old file
rdiff signature old-file signature-file
# create delta using signature file and new file
rdiff delta signature-file new-file delta-file
# generate new file using old file and delta
rdiff patch old-file delta-file gen-file
# test
diff -s gen-file new-file
# Files gen-file and new-file are identical
rdiff नेटवर्क डेल्टास की गणना और लागू करने का एक कार्यक्रम है। एक rdiff डेल्टा बाइनरी फ़ाइलों के बीच एक डेल्टा है, यह वर्णन करता है कि परिणाम (या नई) फ़ाइल बनाने के लिए आधार (या पुरानी) फ़ाइल को स्वचालित रूप से कैसे संपादित किया जा सकता है।
सबसे अलग कार्यक्रमों के विपरीत, लाइब्रिक्स को जब गणना की जाती है, तो दोनों फाइलों तक पहुंच की आवश्यकता नहीं होती है। एक डेल्टा की गणना करने के लिए पुरानी फ़ाइल का केवल एक छोटा "हस्ताक्षर" और नई फ़ाइल की पूरी सामग्री की आवश्यकता होती है। हस्ताक्षर में पुरानी फ़ाइल के ब्लॉक के लिए चेकसम हैं। इन चेकसमों का उपयोग करके, rdiff नई फ़ाइल में मिलान ब्लॉक पाता है, और फिर डेल्टा की गणना करता है।
rdiff deltas आमतौर पर कम कॉम्पैक्ट होते हैं और xelteltas या रेगुलर टेक्स्ट डिफरेंशियल की तुलना में धीमी भी होते हैं। यदि डेल्टा की गणना करते समय पुरानी और नई दोनों फाइलों का मौजूद होना संभव है, तो xdelta आम तौर पर बहुत छोटी फ़ाइल का उत्पादन करेगा। यदि तुलना की जा रही फाइलें सादे पाठ हैं, तो जीएनयू अंतर आमतौर पर एक बेहतर विकल्प होता है, क्योंकि अंतर को मनुष्यों द्वारा देखा जा सकता है और अक्षम मिलान के रूप में लागू किया जा सकता है।
rdiff अपने आप में आ जाता है जब एक ही समय में दोनों फ़ाइलों को पेश करना सुविधाजनक नहीं होता है। इसका एक उदाहरण यह है कि दो फाइलें अलग-अलग मशीनों पर हैं, और आप केवल अंतरों को स्थानांतरित करना चाहते हैं। एक और उदाहरण है जब फ़ाइलों में से एक को केवल अपने हस्ताक्षर को छोड़कर, संग्रह या बैकअप मीडिया में ले जाया गया है।
प्रतीकात्मक
signature(basis-file) -> sig-file
delta(sig-file, new-file) -> delta-file
patch(basis-file, delta-file) -> recreated-file
पैटर्न का उपयोग करें
Rsync एल्गोरिथ्म का एक विशिष्ट अनुप्रयोग एक मशीन A से एक मशीन B से फाइल A2 को स्थानांतरित करना है जिसमें एक समान फ़ाइल A1 है। इसे इस प्रकार किया जा सकता है:
- B, A1 का rdiff हस्ताक्षर बनाता है। इस S1 पर कॉल करें। B, A. को हस्ताक्षर भेजता है (हस्ताक्षर आमतौर पर वर्णित फ़ाइल की तुलना में बहुत छोटा है।)
- एक S1 और A2 के बीच rdiff डेल्टा की गणना करता है। इस डेल्टा को बुलाओ डी। बी को डेल्टा भेजता है।
- B, A2 को दोबारा बनाने के लिए डेल्टा लागू करता है। ऐसे मामलों में जहां A1 और A2 में समान बाइट्स के रन होते हैं, rdiff को एक महत्वपूर्ण स्थान की बचत करनी चाहिए।
स्रोत