त्रुटियों को अनदेखा करते हुए सभी फ़ाइलों को कॉपी करने का सबसे अच्छा तरीका है?


36

मेरे पास आंशिक रूप से दूषित एचडी है जिसे डिस्क उपयोगिता द्वारा मरम्मत नहीं की जा सकती है, लेकिन इसे केवल पढ़ने योग्य बनाया जा सकता है, जिससे डेटा सुलभ हो सके।

मैं एक खाली HD पर सभी पुनर्प्राप्त करने योग्य सामग्री को कॉपी करने की कोशिश कर रहा हूं, लेकिन जब मैं एक त्रुटि का सामना करता हूं तो हर विधि विफल हो जाती है - शेष फ़ाइलों को बंद छोड़ दिया जाता है।

खोजक - विफल। सुपरडुपर - विफल। डिट्टो (टर्मिनल कमांड) - विफल।

मैं उम्मीद कर रहा था कि डिट्टो चाल चलेगा, डिट्टो मैन पेज कहता है:

ditto 0 देता है यदि सब कुछ कॉपी किया जाता है, तो गैर-शून्य। डिट्टो लगभग कभी भी हार नहीं मानती, रास्ते में त्रुटियों की रिपोर्ट करना पसंद करती है। नैदानिक ​​संदेश मानक त्रुटि के लिए मुद्रित किए जाएंगे।

मैंने Apple को फिर से विज्ञापन के रूप में प्रदर्शन करने में विफल रहने के लिए एक बग सबमिट किया है।

कोई अन्य विचार?


नीचे दिए गए उत्तरों के बजाय stackoverflow.com/a/27637277 देखें --ignore-errors
स्पाईल

जवाबों:


28

मैं cp -Rfv sourcefile destinationfileएक नियमित रूप से सफलता के साथ उपयोग करता हूं ।

cp = कॉपी

आर = फ़ाइल पदानुक्रम को बनाए रखता है

f = यदि कोई मौजूदा गंतव्य फ़ाइल नहीं खोली जा सकती है, तो उसे हटा दें और पुनः प्रयास करें

v = वर्बोज़ मोड, प्रगति के रूप में स्थानांतरित फ़ाइलों को प्रदर्शित करता है

sourcefile = वह डेटा जिसे आप कॉपी करना चाहते हैं

डेस्टिनेफाइल = निर्देशिका / ड्राइव जिसे आप कॉपी करना चाहते हैं


3
यह स्रोत ड्राइव पर त्रुटियों को कैसे अनदेखा करता है (प्रश्न देखें)?
nohillside

1
@patrix यह त्रुटियों को "अनदेखा" नहीं करता है, लेकिन "f" ध्वज बलों के माध्यम से, केवल बरकरार डेटा की प्रतिलिपि बनाता है। जब आप प्रगति को देखते हैं (क्रिया ध्वज के लिए धन्यवाद) आप खराब डेटा से सामना करने पर "I / O त्रुटि के कारण कॉपी नहीं किए गए डेटा" की तर्ज पर आउटपुट देखेंगे। एक बार त्रुटि प्रदर्शित होने के बाद यह किसी भी उपयोगकर्ता इनपुट के बिना अगली फ़ाइल पर जाता है। पोस्टर का परिदृश्य उन दर्जनों बार के समान है जो मैंने इस कमांड का उपयोग फ्लेकी डिस्क / वॉल्यूम से डेटा प्राप्त करने के लिए किया है।
श्री खरगोश

क्या कुछ पोस्टफ़िक्स के साथ एक असफल फ़ाइल को कॉपी करने का एक तरीका है, इसलिए सभी लापता फाइलें बेहतर पाई जाती हैं?

1
बीएसडी cpमैनुअल (macOS) से: "इन-आर मोड, cp कॉपी करना जारी रखेगा भले ही त्रुटियों का पता चल जाए।"
मैट

इस लिए आपका बहुत - बहुत धन्यवाद। मैं वर्तमान में एक असफल एचडीडी से जितना संभव हो सके उबारने की कोशिश कर रहा हूं, हालांकि मुझे दूषित डेटा की परवाह नहीं है, मैं इसे ठीक करने की कोशिश कर रहा हूं लेकिन इसे हटाने के लिए कोई भी समय बर्बाद नहीं करेगा। यह जल्दी से इसे प्राप्त करने के लिए एक काम करने की विधि है। मैं एक लॉगफ़ाइल, जो मैं बाद में पार्स कर सकते हैं पढ़ने के लिए त्रुटियों के साथ छोटा कर दिया फ़ाइलों को हटाना में त्रुटियों पाइप रहा हूँ, निम्नलिखित जोड़कर:2> error.log
0x01

23

प्रयास करें ग्नू ddrescue - यह एक डाटा वसूली कार्यक्रम है कि कॉपी ऑपरेशन के दौरान भ्रष्ट डेटा रिकवरी के साथ ब्लॉक आधारित नकल करता है। यदि आप Homebrew का उपयोग टर्मिनल विंडो में लिखकर कर रहे हैं, तो आप इसे OS X के लिए प्राप्त कर सकते हैं:

brew install ddrescue

Arstechnica पर एक गाइड का वर्णन है कि ddrescue का उपयोग करके एक असफल डिस्क को कैसे बचाया जाए। सुनिश्चित करें कि आप गाइड के माध्यम से पढ़ते हैं, क्योंकि इसमें उपयोगी जानकारी है। यहाँ कैसे प्राप्त करने के लिए एक सार है।

  • ड्राइव का उपयोग कर पता लगाएँ diskutil list। पहचानकर्ता कॉलम वह है जो आप खोज रहे हैं:

    /dev/disk1
       #:                       TYPE NAME                    SIZE       IDENTIFIER
       0:      GUID_partition_scheme                        *750.2 GB   disk1
       1:                        EFI EFI                     209.7 MB   disk1s1
       2:                  Apple_HFS Macintosh HD 2          80.0 GB    disk1s2
       3:                  Apple_HFS Home                    509.1 GB   disk1s3
    
  • विचाराधीन डिस्क को अनमाउंट करें:

    diskutil unmount /dev/disk1s3    
    
  • एक छवि में डिस्क का बचाव अभियान शुरू करें। सुनिश्चित करें कि Rescue.dmgआपके इच्छित स्थान से स्थान बदल दिया गया है।

    sudo /usr/local/bin/ddrescue -v -n -c 4096 /dev/disk1s3 Rescue.dmg Rescue.log
    
  • एक नई ड्राइव पर छवि पुनर्प्राप्त करें :

    sudo /usr/local/bin/ddrescue --force -v -c 4096 Rescue.dmg /dev/disk2s0 recovery.log
    

यह भी सलाह दी जाती है कि दौड़ने के लिए उपलब्ध विकल्पों पर खुद को शिक्षित करने के लिए ddrescue का मैनुअल पढ़ें man ddrescue


1
मॉडरेटर नोटिस में जोड़ने के लिए: यह समस्या का एक बहुत अच्छा जवाब हो सकता है लेकिन इसके लिए अधिक काम करने की आवश्यकता है। क्या आप जवाब के लिए OS X उपकरणों के लिए कुछ नमूना ddrescue कमांड जोड़ सकते हैं? मैंने इसे उस तरह की पृष्ठभूमि और जानकारी के साथ तय किया है, जिसे हम यहां उत्तर में देखना पसंद करते हैं। यदि आप ऐसा करते हैं, तो मुझे यकीन है कि यह एक शानदार प्रतिक्रिया होगी।
इयान सी

मैंने एक या दो साल पहले सफलतापूर्वक एक खराब डिस्क से डेटा कॉपी करने के लिए ddrescue का उपयोग किया। यह पिछले 200 त्रुटियों को मिला, और अंततः उन लोगों में से आधे के बारे में पढ़ने में कामयाब रहा। परिणामी प्रतिलिपि बनाई गई डिस्क को डिस्कवरी में खिलाया गया और परिणाम शायद 1 मिलियन में से 10 फाइलों को नुकसान पहुंचा।
पिट्सबर्ग माइक

7

मुझे rsyncकिसी दूषित स्रोत से फ़ंक्शनल गंतव्य तक फ़ाइलों की प्रतिलिपि बनाने के लिए उपयोग करना पसंद है:

rsync -auv --delete --ignore-errors /path/to/source/ /path/to/destination/

कहा पे:

-a = "पुरालेख मोड" = निर्देशिकाओं में पुनरावृत्ति करता है, सहानुभूति के रूप में प्रतियां कॉपी करता है, अनुमतियों, समय, समूहों और विशेष फाइलों को संरक्षित करता है, मालिक (जब मालिक = जड़) और उपकरणों (जब मालिक = जड़) को संरक्षित करता है।

-u= फ़ाइल को स्रोत में छोड़ देता है यदि गंतव्य में उसकी संबंधित प्रतिलिपि नई है

-v = क्रिया उत्पादन

--delete= गंतव्य पर मौजूद फ़ाइलें जो स्रोत पर मौजूद नहीं हैं, हटा दी जाएंगी

--ignore-errors = कॉपी प्रक्रिया के दौरान I / O त्रुटि के मामले में एक फ़ाइल / निर्देशिका हटाता है


4

यह मैकवर्ल्ड संकेत एक बिट-बाय-बिट कॉपी (त्रुटियों की अनदेखी) बनाने के लिए डीडी का उपयोग करने का सुझाव देता है, फिर फाइंडर में परिणामी छवि को बढ़ाकर आपकी फ़ाइलों को पुनर्प्राप्त करने के लिए। मैंने इसे आज़माया नहीं है, लेकिन ऐसा लगता है कि यह काम कर सकता है।


यह अच्छा है, क्योंकि आप अपना डेटा तेजी से चाहते हैं यदि वह डिस्क डफ है। इस तरह, आपको त्रुटियों सहित ब्लॉक कॉपी के लिए एक ब्लॉक मिलता है, फिर यह चिंता किए बिना आपके अवकाश पर निरीक्षण के लिए उपलब्ध होगा कि डिस्क को पूरी तरह से मरने से पहले आप इसे बंद कर देंगे। मैं एक ऑपरेशन करूँगा, एक अच्छी साफ सुथरी शुरुआत में, जो कि फाइल के टुकड़े से लेकर फाइल के टुकड़े तक सब जगह बिना लंघन के खत्म हो जाएगी, जो कि डीडी कॉपी बनाने वाले ड्राइव पर कठिन काम होगा।
भरवां

3
ddresoscope इस पर dd से बेहतर है, क्योंकि यह खराब सेक्शन को तब तक और जब तक आप इसे छोड़ते हैं, तब तक इसे फिर से चलाएंगे - इस पिछले उत्तर को देखें जहां ओपी देव अपने डेटा को कुछ हफ़्ते के पीसने के बाद बंद कर देते हैं (!)। ध्यान दें कि यह एक अच्छा तरीका है अगर एचडी हार्डवेयर विफल हो रहा है, लेकिन वॉल्यूम संरचना के भ्रष्टाचार को ठीक करने के लिए कुछ भी नहीं करता है - जो कि फ़ाइलों के साथ ही कॉपी हो जाता है।
गॉर्डन डेविसन

3

आप ddअपने भ्रष्ट HDD से अपने नए HDD में ब्लॉक-बाय-ब्लॉक कॉपी करने के लिए कमांड का उपयोग करने पर विचार कर सकते हैं ।

अपने नए-एचडीडी ( /dev/disk2) को अपने भ्रष्ट-एचडीडी ( /dev/disk1) से बराबर या अधिक आकार का मान लें , तो आप जारी कर सकते हैं:

dd if=/dev/disk1 of=/dev/disk2 bs=4096 conv=notrunc,noerror

अवरुद्ध @ 4k, किसी भी डेटा ब्लॉक को छोटा न करें, सभी त्रुटियों को अनदेखा करें

डिवाइस के नाम खोजने के लिए, mountपहले टर्मिनल से चलाएं ।


0

dittoआदेश काम करना चाहिए, मैं का प्रयोग करेंगे dittoके साथ संयोजन के रूप में -vअत्यधिक शब्द के लिए विकल्प तो आप देख सकते हैं कि वास्तव में क्या आप क्या यह प्रतियों की एक त्रुटि देता है।


3
पूछने के अनुसार dittoकाम नहीं करता है। आपको ऐसा क्यों लगता है?
nohillside

सेशन के लिए विकल्प के बारे में पूछ रहा हैditto
juniorRubyist

0

आप SuperDuper चलाने की कोशिश कर सकते हैं और io त्रुटियों के साथ फ़ाइलों को अनदेखा कर सकते हैं, अगर यह केवल कुछ ही है और आप स्मार्ट अपडेट सुविधा का उपयोग करते हैं जो अधिकांश डेटा को बंद करने का एक बहुत प्रभावी तरीका है। (मुझे लगता है कि यदि आप ऐसा कर सकते हैं तो dd कमांड बेहतर होगा)।

कदम:

  1. बैकअप रणनीति के रूप में 'बैकअप ऑल फाइल्स' का चयन करें
  2. विकल्पों में 'स्मार्ट अपडेट' चुनें (अन्यथा यह प्रक्रिया हास्यास्पद रूप से लंबा समय लेगी यदि आपके पास एक या दो से अधिक त्रुटियां हैं, तो आपको इसके लिए भुगतान किए गए संस्करण की आवश्यकता होगी)
  3. प्रतिलिपि चलाएँ
  4. जब कॉपी विफल हो जाती है तो लॉग को यह जानने के लिए पढ़ें कि कौन सी फाइल कॉपी करने में विफल रही, फिर 'स्टार्ट' स्क्रीन पर वापस जाने के लिए ओके / क्लोज करें
  5. उपयोग ड्रॉपडाउन से 'चयनित कॉपी स्क्रिप्ट संपादित करें' चुनें
  6. स्क्रिप्ट कमांड्स के तहत वह फ़ाइल जोड़ें जो कॉपी करने में विफल रही, इसे फाइलों की सूची में शामिल करने के बाद इसे 'इग्नोर' करना चाहिए
  7. कुछ नाम के साथ अपनी स्क्रिप्ट को सहेजें (जैसे अनदेखा-दूषित-फ़ाइलें)
  8. अपनी स्क्रिप्ट का चयन करें और सभी भ्रष्ट फ़ाइलों को अनदेखा करने के लिए आवश्यक के रूप में कई बार 3-7 कदम दोहराएँ।

-2

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

http://www.roadkil.net/program.php?ProgramID=29


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