Tüm dosyaları kopyalamanın, hataları görmezden gelmenin en iyi yolu?


36

Disk Hizmet Programı tarafından onarılamayacak, ancak verileri salt okunur bir şekilde erişilebilir duruma getirmek için monte edilebilecek kısmen bozuk bir HD'm var.

Tüm kurtarılabilir içerikleri yedek bir HD'ye kopyalamaya çalışıyorum, ancak denediğim her yöntem bir hatayla karşılaştığında başarısız oluyor - kalan dosyaları doldurmadan bırakıyor.

Bulucu - Başarısız. SuperDuper - Başarısız. Aynen (terminal komutu) - Başarısız.

Ditto'nun işe yarayacağını umuyordum, Ditto man sayfası şöyle diyor:

Her şey kopyalanırsa, ditto 0 döndürür, aksi takdirde sıfır değildir. aynen neredeyse hiç pes etmez, yol boyunca hataları bildirmeyi tercih eder. Teşhis mesajları standart hataya yazdırılacaktır.

Apple’ın ilan ettiği gibi çalışamama konusunda bir hata gönderdim.

Başka fikrin var mı?


Bkz stackoverflow.com/a/27637277 yerine --ignore-errorsaşağıdaki yanıtları.
spyle

Yanıtlar:


28

Kullandığım cp -Rfv sourcefile destinationfileoldukça düzenli olarak başarı ile.

cp = kopyala

R = dosya sıradüzenlerini korur

f = mevcut bir hedef dosya açılamazsa, kaldırın ve tekrar deneyin

v = ayrıntılı mod, ilerledikçe aktarılan dosyaları görüntüler

sourcefile = kopyalamak istediğiniz veriler

destinationfile = kopyalamak istediğiniz dizin / sürücü


3
Bu kaynak sürücüdeki hataları nasıl görmezden gelir (soruya bakın)?
yokuş yukarı

1
@patrix Hataları "yoksaymaz", ancak "f" bayrağı bunlar arasında zorlar, sadece bozulmamış verileri kopyalar. İlerlemeyi izlerken (ayrıntılı bayrağı sayesinde), hatalı verilerle karşılaştığında "G / Ç hatası nedeniyle kopyalanmayan veri" satırları boyunca çıktı göreceksiniz. Hata görüntülendiğinde kullanıcı girişi olmadan bir sonraki dosyaya geçer. Posterin senaryosu, bu komutu flakey disklerden / birimlerden veri almak için kullandığım düzinelerce defalarca benzer.
Bay Tavşan,

Başarısız bir dosyayı bir postfix ile kopyalamanın bir yolu var mı, bu yüzden tüm eksik dosyalar daha iyi bulunacak mı?

1
BSD cpkılavuzundan (macOS): "-R modunda, hatalar tespit edilse bile cp kopyalamaya devam edecektir."
Matt

Bunun için çok teşekkürler. Şu an arızalı bir HDD’den elimden geldiğince kurtarmaya çalışıyorum, bozuk veri umrumda olmasa da, düzeltmeye çalışmakla zaman kaybetmiyorum, sadece siliyorum. Bu hızlı bir şekilde elde etmek için çalışan bir yöntemdir. Aşağıdakileri ekleyerek hataları daha sonra kesilmiş dosyaları okuma hatalarıyla silmek için ayrıştırabileceğim bir günlük dosyasına aktarıyorum:2> error.log
0x01 23.03.2002

23

Gnu kurtarma programını deneyin - kopyalama işlemleri sırasında bozuk veri kurtarma ile blok tabanlı kopyalamayı yapan bir veri kurtarma programıdır. Terminal penceresine tıklayarak Homebrew kullanıyorsanız, OS X için alabilirsiniz :

brew install ddrescue

Arstechnica'da bir rehber, ddrescue kullanarak başarısız bir diskin nasıl kurtarılacağını açıklar. Yararlı bilgiler içerdiğinden kılavuzu okuduğunuzdan emin olun. İşte oraya nasıl gidileceği konusunda bir fikir.

  • Kullanarak sürücüyü bulun diskutil list. Tanımlayıcı sütunu, aradığınız şeydir:

    /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
    
  • Söz konusu diski çıkarın:

    diskutil unmount /dev/disk1s3    
    
  • Diskin kurtarma işlemini bir görüntüye başlatın. Konumunun Rescue.dmgistediğiniz konumla değiştirildiğinden emin olun .

    sudo /usr/local/bin/ddrescue -v -n -c 4096 /dev/disk1s3 Rescue.dmg Rescue.log
    
  • Görüntüyü yeni bir sürücüye kurtarın :

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

Kullanarak mevcut seçenekler konusunda kendinizi eğitmek için kurtarma kılavuzunu da okumanız önerilir man ddrescue.


1
Moderatör bildirimine eklemek için: bu soruna çok iyi bir cevap olabilir ama daha fazla çalışmaya ihtiyacı var. OS X cihazları için bazı örnek kurtarma komutları cevabına ekleyebilir misiniz? Burada, cevaplarda görmek istediğimiz türden bir arka plan ve bilgiyi biraz düzelttim. Bunu yaparsan, bunun iyi bir cevap olacağına eminim.
Ian C.

Kötü bir diskten veri kopyalamak için bir veya iki yıl önce ddrescue programını başarıyla kullandım. Belki 200 hata geçti ve sonunda bunların yarısını okumayı başardı. Ortaya çıkan kopyalanan disk, disk savaşçısına beslendi ve sonuçta 1 milyon üzerinden 10 dosya zarar gördü.
Pittsburgh Mike

7

rsyncBozuk bir kaynaktan dosyaları işlevsel bir hedefe kopyalamak için kullanmayı seviyorum :

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

Nerede:

-a = "archive mode" = dizinlere geri çeker, sembolik bağlantıları sembolik olarak kopyalar, izinleri, süreleri, grupları ve özel dosyaları korur, ayrıca sahibi (root sahibiyken) ve aygıtları (owner = root) korur

-u= Hedefe karşılık gelen kopyası daha yeni ise, kaynaktaki dosyayı atlar

-v = ayrıntılı çıktı

--delete= kaynakta bulunmayan hedefteki dosyalar silinecek

--ignore-errors = kopyalama işlemi sırasında G / Ç hatası olması durumunda bir dosyayı / dizini siler


4

Bu Macworld ipucu , bit-bit kopyalama yapmak için dd'nin kullanılmasını (hataları göz ardı ederek), ardından elde edilen görüntüyü, dosyalarınızı kurtarmak için Finder'a yerleştirmeyi önerir. Denemedim, ama işe yarayabilir gibi geliyor.


Bu iyidir, çünkü eğer disk boşsa, verilerinizin hızlı bir şekilde kapatılmasını istiyorsunuz . Bu sayede, hataları içeren blok kopyaları için bir blok elde edersiniz, bu da boş zamanlarınızda incelemeye hazır olacak ve diski her şeyi çıkarmadan önce diskin çabucak öleceğinden endişe etmeden kullanılabilir. Bir işlemi gerçekleştireceğim, güzel ve düzgün bir başlangıçta, dosya parçasından dosya parçasına kadar her yeri atlamaksızın, DD kopyasını yaratan sürücüde daha zor bir iş olacak.
12'de

3
ddrescue, dd'den daha iyidir, çünkü çalışmadan ayrıldığınız süre boyunca tekrar tekrar kötü bölümleri tekrar deneyecektir - OP tanrısının birkaç hafta öğütmeden sonra (!) verilerini çıkardığı önceki cevaba bakınız . HD donanımı arızalanıyorsa bunun iyi bir yaklaşım olduğunu unutmayın, ancak hacimli yapı bozulmasını gidermek için hiçbir şey yapmaz - bu sadece dosyalarla birlikte kopyalanır.
Gordon Davisson

3

ddKomutu, bozuk HDD’nizden yeni HDD’nize blok-blok kopya yapmak için kullanmayı düşünebilirsiniz .

Yeni HDD’nizin ( /dev/disk2), bozuk HDD’nizden ( /dev/disk1) eşit veya daha büyük olduğunu farz edersek, şunları yapabilirsiniz:

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

blocksized @ 4k, herhangi bir veri bloğunu kesmeyin, tüm hataları yoksayın

Cihaz adlarını bulmak için mountönce Terminal'den çalıştırın .


0

dittoKomut ben kullanırım, çalışması gerekir dittoile birlikte -vsize ne kopya size bir hata veriyor tam olarak ne görebilmek için ayrıntılı seçeneğiyle.


3
Askere göre dittoçalışmıyor. Neden olduğunu düşünüyorsun?
yokuş yukarı

op alternatifler hakkında sorular soruyorditto
juniorRubyist

0

SuperDuper'ı çalıştırmayı ve io hatalarıyla dosyaları görmezden gelmeyi deneyebilirsiniz, yalnızca birkaçıysa ve verilerin çoğunu almanın oldukça etkili bir yolu olan akıllı güncelleme özelliğini kullanırsanız. (Bunu yapabiliyorsanız dd komutunun tercih edilebileceğini düşünüyorum).

Adımlar:

  1. Yedekleme stratejisi olarak 'tüm dosyaları yedekle' seçeneğini seçin
  2. Seçeneklerde 'akıllı güncelleme' seçeneğini seçin (aksi takdirde, bir veya ikiden fazla hataya sahipseniz bu işlem çok uzun sürecek, bunun için ücretli sürüme ihtiyacınız olacak)
  3. Kopyayı çalıştır
  4. Kopyalama başarısız olduğunda, hangi dosyanın kopyalanamadığını bulmak için günlükleri okuyun, ardından 'başlangıç' ekranına dönmek için ok / kapat düğmesine basın.
  5. Açılan menüden 'seçili kopya komut dosyasını düzenle'yi seçin
  6. Komut dosyası komutları altında, kopyalanamayan dosyayı ekleyin, dosyalar listesine eklendikten sonra 'yoksay' demesi gerekir
  7. Komut dosyanızı bir adla kaydedin (örneğin, görmezden gelinen dosyalar)
  8. Komut dosyanızı seçin ve tüm bozuk dosyaları yoksaymak için gerektiği kadar 3-7. Adımları tekrarlayın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.