जवाबों:
ddresoscope फिर से शुरू किया जा सकता है, लेकिन ऐसा करने में सक्षम होने के लिए एक लॉग फ़ाइल की आवश्यकता होती है। लॉग फ़ाइल प्रगति को रिकॉर्ड करेगी जिसे ddrescue ने अब तक बनाया है, और ddresoscope को पुनरारंभ करने से लॉग फ़ाइल पढ़ी जाएगी और जहां इसे छोड़ा गया है, वहां से शुरू होगा।
लॉग फ़ाइल तीसरा पैरामीटर होगा:
ddrescue /dev/sdd1 ./bye1t.dd_rescue.image ~/sdd1.log
यदि आपने पहले से ही एक लॉग फ़ाइल के बिना एक ddresoscope रन शुरू कर दिया है और इसे रद्द कर देते हैं, तो अगली बार ddrescue चलता है, यह शुरुआत में शुरू होगा क्योंकि इसमें कोई रिकॉर्ड नहीं है जो पहले से ही पुनर्प्राप्त हो चुका है।
यहां तक कि अगर आप लॉगफ़ाइल निर्दिष्ट करना भूल गए, तो भी आशा की जा सकती है:
इसलिए आपने ट्यूटोरियल नहीं पढ़ा और बिना लॉगफ़ाइल के ddrescue शुरू किया। अब, दो दिन बाद, आपका कंप्यूटर दुर्घटनाग्रस्त हो गया और आप यह नहीं जान सकते हैं कि ddresoscope कितना डेटा बचाने में कामयाब रहा। और इससे भी बदतर, आप बचाव को फिर से शुरू नहीं कर सकते हैं; आपको इसे शुरू से ही पुनरारंभ करना होगा।
या हो सकता है कि आपने किसी ड्राइव को कॉपी करना शुरू कर दिया हो dd conv=noerror,sync
और अब ऊपर वर्णित स्थिति में हो। इस स्थिति में, ध्यान दें कि आप dd द्वारा बनाई गई कॉपी का उपयोग नहीं कर सकते हैं जब तक कि इसे sync
रूपांतरण तर्क के साथ लागू नहीं किया गया हो ।
निराशा (अभी तक) नहीं है। Ddrescue कुछ मामलों में इनपुट फ़ाइल और आंशिक (आंशिक) प्रतिलिपि से एक अनुमानित लॉगफ़ाइल उत्पन्न कर सकता है, जो लगभग सटीक लॉगफ़ाइल के रूप में अच्छा है। यह केवल यह मानकर चलता है कि सभी ज़ीरो में शामिल सेक्टरों को बचाया नहीं गया था।
हालाँकि, यदि प्रतिलिपि का गंतव्य एक ड्राइव या विभाजन था, (या एक मौजूदा नियमित फ़ाइल और ट्रंकेशन का अनुरोध नहीं किया गया था), तो शायद आपको शुरुआत से ही ddresoscope को पुनः आरंभ करना होगा। (इस बार लॉगफाइल के साथ, निश्चित रूप से)। कारण यह है कि पुराना डेटा उस ड्राइव में मौजूद हो सकता है जिसे अभी तक अधिलेखित नहीं किया गया है, और इस प्रकार गैर-कोशिश की जा सकती है लेकिन गैर-शून्य।
उदाहरण के लिए, यदि आपने पहली बार इनमें से एक कमांड की कोशिश की है:
ddrescue infile outfile
या
dd if=infile of=outfile conv=noerror,sync
आप इस आदेश के साथ एक अनुमानित लॉगफ़ाइल उत्पन्न कर सकते हैं:
ddrescue --generate-mode infile outfile logfile
जैसा कि दूसरों ने कहा है, आपको हमेशा तीसरे पैरामीटर के रूप में एक लॉगफाइल निर्दिष्ट करना चाहिए, जो फिर से शुरू करने की अनुमति देगा। चूँकि आपने ऐसा नहीं किया, इसलिए यहाँ आपकी मदद नहीं होगी। यदि आप लगभग जानते हैं कि प्रक्रिया किस बिंदु पर पहुंच गई है, तो आप उस बिंदु से शुरू करने के लिए --input-position
और --output-position
मापदंडों का उपयोग कर सकते हैं (सुनिश्चित करें कि उन दोनों मापदंडों को एक ही मूल्य पर सेट करें, अन्यथा आउटपुट दूषित हो जाएगा)।
चूंकि आपने तीसरे पैरामीटर के रूप में एक लॉग फ़ाइल निर्दिष्ट नहीं की थी, इसलिए फिर से शुरू करना स्वचालित रूप से नहीं किया जा सकता है। यदि आप पहले से ही बचाए गए क्षेत्रों को जानते हैं, तो आप हाथ से एक लॉगफाइल बना सकते हैं, वाक्यविन्यास आसान है। बस एक लॉग को निर्दिष्ट करते हुए एक और फ़ाइल के लिए एक और डमी बचाव शुरू करें और इसे विभिन्न क्षेत्रों को पढ़ने दें। फिर अपनी पहली फ़ाइल में पहले से ही बचाया क्षेत्रों का प्रतिनिधित्व करने के लिए लॉग को संपादित करें। अब अपनी पिछली कमांड को फिर से चलाएं लेकिन तीसरे पैरामीटर के रूप में लॉग फाइल का नाम दें। ddresoscope फिर पहले अनट्रेक्टेड सेक्टर पर फिर से शुरू होगा।
प्रति https://wiki.archlinux.org/index.php/Disk_cloning से ऐसा लगता है कि conv=noerror,sync
स्विच के साथ , dd
वास्तव में एक ब्लॉक के अंत में शून्य जोड़ते हैं , न कि वास्तव में जहां पढ़ने में त्रुटियां हुईं। यह 2013-08-29 से मीलों वोल्बे के जवाब में जानकारी के विपरीत है।
उदाहरण के लिए, यदि एक सही अनुक्रम है 198123283
और बीच में एक पढ़ने में त्रुटि है तो यह लिखेगा 198283000
, नहीं 198000283
।
तो अगर वास्तव में गलतियाँ थीं तो प्रस्तावित पद्धति सटीक नहीं होगी- ऐसे क्षेत्र होंगे जो पठनीय होंगे जो शून्य से भरे होंगे, फिर भी "बचाया" माना जाएगा।
वैसे, गंतव्य ड्राइव को शून्य (या कम से कम मुक्त स्थान, जो कि उदाहरण के लिए WinHex के साथ किया जा सकता है) के साथ भरकर इस तरह के पुनर्प्राप्ति प्रयास को शुरू करना एक अच्छा अभ्यास है।