Dd backup की अखंडता की जाँच कैसे करें?


11

मैंने अभी एक संपूर्ण हार्ड ड्राइव (50GB) का बैकअप बनाया है ssh:

dd if=/dev/hda | buffer -s 64k -S 10m | ssh myuser@myhost "cat > ~/image.img"

अब फ़ाइल की अखंडता की जांच करने का सबसे अच्छा तरीका क्या है image.img, यानी कैसे सत्यापित करें कि सब कुछ सही तरीके से कॉपी किया गया है?


आमतौर पर जब आप dd करते हैं, तो यह हमेशा सही होता है। हालाँकि, आप मूल और बैकअप के sha1 हैश की जाँच करने के लिए हमेशा sha1sum चला सकते हैं।
डेनिअर

2
" आमतौर पर ... यह हमेशा सही होता है।" द नेकेड गन के उस उद्धरण की याद दिलाता है: "डॉक्टर्स कहते हैं कि नॉर्डबर्ग के पास जीवन जीने का 50/50 मौका है, हालांकि उस का केवल 10 प्रतिशत मौका है"।
स्पार्कहॉक

जवाबों:


10

यदि कमांड सफलतापूर्वक समाप्त हो गया है, तो बैकअप सही है, एक हार्डवेयर फॉल्ट को छोड़कर (जो आपके द्वारा किए जा रहे किसी भी सत्यापन को समान रूप से प्रभावित कर सकता है)। हार्डवेयर के दोषपूर्ण होने पर यह बाद में गलत हो सकता है, लेकिन अधिकांश स्टोरेज हार्डवेयर भ्रष्टाचार का पता लगाता है।

यहाँ एक कैविएट है: एक पाइपलाइन में, शेल बायीं ओर से त्रुटियों की रिपोर्ट नहीं करता है। (यह एक बहुत ही आम परिदृश्य में जहाँ दाएँ हाथ की ओर सभी डेटा, जैसे पढ़ने की जरूरत नहीं है की वजह से है some_command | headतो यहाँ से एक पठन त्रुटि, और बाएं ओर मरता इसके उत्पादन नहीं रह गया है, क्योंकि चाहता था।) ddचाहेंगे अनदेखा किया जाए। बैश में, pipefailपाइपलाइन के सभी हिस्सों से त्रुटियों की रिपोर्ट करने का विकल्प सेट करें ।

इसके अलावा, सावधान रहें कि dd bs=…कुछ त्रुटियों को अनदेखा करता है और ddअक्सर विकल्पों की तुलना में धीमा होता है । मैं बिल्कुल भी उपयोग न करने की सलाह देता हूं dd: पूरी फाइल को कॉपी करने का कोई लाभ नहीं है। जो आपने कहीं पढ़ा होगा, उसके विपरीत, ddविशेष संपत्ति के साथ एक निम्न-स्तरीय डिस्क एक्सेस कमांड नहीं है, इसमें कोई जादू नहीं है dd, जादू अंदर है /dev/hda

shopt -s pipefail
set -e
</dev/hda buffer -s 64k -S 10m | ssh myuser@myhost "cat > ~/image.img"

फिर भी, यदि आप बैकअप की जांच करना चाहते हैं, तो सबसे अच्छा तरीका है कि आप प्रत्येक पक्ष पर क्रिप्टोग्राफिक चेकसम लें और उनकी तुलना करें। उदाहरण के लिए:

ssh myuser@myhost "sha1sum image.img" &
sudo sha1sum /dev/hda

जाँच करें कि दो चेकसम समान हैं।

ध्यान दें कि यह जांच कि क्या बैकअप और मूल चेक के समय समान हैं। किसी भी चीज को आप /dev/hdaबिना किसी बदलाव के भी बढ़ते हुए और अनमाउंट करने सहित, (जो कई फाइल सिस्टमों पर अंतिम माउंट की तारीख को अद्यतन करेगा), चेकसम को बदल देगा। यदि आप बाद में अखंडता को सत्यापित करना चाहते हैं, तो बैकअप के समय डिस्क के चेकसम को नोट करें।


3
ध्यान दें कि यदि कुछ भी पर /dev/hdaके बाद से वापस ऊपर बनाया गया था बदल गया है हैश मेल नहीं खाएगी।
bahamat

हैश चेक का लाभ यह है कि झूठी-नकारात्मक (रिकॉर्डिंग की गई छवि में त्रुटि, संयोग से, हैश रन के दौरान दोहराई जाती है, ताकि कोई गलती न हो जाए) खगोलीय रूप से छोटा है। यदि कोई हार्डवेयर फाल्ट मौजूद है, तो उसे एक विफल हैश चेक में परिणाम होना चाहिए। यदि डिस्क को बदल दिया गया है, तो एक गलत-पॉज़िटिव फेल चेक मिलेगा, जैसा कि नोट किया गया है।
स्टीवन लू

@StevenLu नहीं, सहसंबंध की संभावना काफी अधिक है, क्योंकि हार्डवेयर दोष समान रूप से यादृच्छिक नहीं हैं। विशेष रूप से, रैम त्रुटियां (जो सबसे आम हार्डवेयर दोष हैं जो विशिष्ट पीसी में देखने योग्य हैं) विशिष्ट बिट्स में होती हैं।
गिल्स एसओ- बुराई को रोकना

ठीक है, शायद ... नमक का एक बड़ा अनाज के साथ इस तरह हैश, ज़रूर, लेकिन ओपी एक नेटवर्क पर स्थानांतरित कर रहा था। यह सिर्फ स्वाभाविक रूप से अविश्वसनीय है, टीसीपी के बावजूद। इसके अलावा, संभावनाएं हैं कि हम एक ही सटीक पहुंच पैटर्न (भौतिक स्मृति में) नहीं देख पाएंगे।
स्टीवन लू

@ संबंधित प्रथम वाक्य के बारे में स्पष्टीकरण मांगते हुए नए संबंधित प्रश्न
स्पार्कहॉक

5

जैसा कि darnir & Giles ने उल्लेख किया है, सबसे अच्छी बात यह है कि क्रिप्टोग्राफिक हैश को तुरंत चलाने के तुरंत बाद आपके स्रोत डिस्क पर कुछ भी बदल दिया गया है। यदि, हालांकि, आपने डिस्क का उपयोग किया है, तो हैश सबसे अधिक मेल नहीं खाएगा। यहां तक ​​कि डिस्क पर एक बाइट को बदलने से पूरी तरह से अलग हैश होगा।

यद्यपि यह आदर्श से बहुत कम है, आप छवि को बढ़ते हुए देख सकते हैं। उस सिस्टम पर जहां डिस्क छवि है, निम्नलिखित को चलाएं (बनाएं /mnt/diskयदि यह मौजूद नहीं है या हमें एक वैकल्पिक स्थान है):

mount -o loop image.img /mnt/disk

आप तब चारों ओर ब्राउज़ कर सकते हैं /mnt/diskऔर सभी फ़ाइलों को देख सकते हैं। अपनी अखंडता को सत्यापित करने के लिए मूल के खिलाफ छवि के अंदर महत्वपूर्ण फाइलों के sha1 हैश की जाँच करें।


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