Bir yerde ilgili internetlerde O oku gddrescue üstündür dd , en az bir sorunlu sektör üzerinde gerçekleştirilen okur diskin miktarı arasında ayırt etme açısından. Gerçekten böyle mi?
zaman dd = = dev / sda atlama = 900343967 / = a.bin sayısı = 4 iflag = doğrudan dönüşüm = noerror, senkronizasyon
dd: okuma / dev / sda: Giriş / çıkış hatası
2 + 0 kayıtlarda
2 + 0 kayıt,
1024 bayt (1.0 kB) kopyalandı, 18.6057 s, 0.1 kB / s
3 + 1 kayıt
4 + 0 kayıtta
2048 bayt (2.0 kB) kopyalandı, 18.6707 s, 0.1 kB / sgerçek 0m18.672s
kullanıcı 0m0.000s
sys 0m0.004s
Btw, doğrudan bayrak gerçekten yardımcı olur, w / o Ben sadece 4 üzerinden 1 sektör okuyabilir (onunla 3/4 vs). Ancak, bu transfer hızını belirgin şekilde yavaşlatıyor - benim için en az yaklaşık 5 kat daha yavaş: bu bayrak olmadan 5MB / s vs 25MB / s . Her neyse, şimdi gddrescue (ddrescue) bölümü için ..
zaman dd kurtarma -b512 -c1 -s4b -dnvD -i900343967b -o0b / dev / sda b.bin
2048 Bayt / dev / sda'dan b.bin'e kopyalanmak üzere
Başlangıç pozisyonu: infile = 460976 MB, outfile = 0 B
Kopya bloğu boyutu: 1 sert bloklar
Sert blok boyutu: 512 bayt
Max_retries: 0
Doğrudan: evet Seyrek: hayır Bölünmüş: hayır Kesme: hayır
Kurtarmayı kesmek için Ctrl-C tuşlarına basın : 1536 B, hata: 512 B, geçerli hız: 53 B / s
ipos: 460976 MB, hatalar: 1, ortalama hız: 53 B / s
opos: 1536 B, son başarılı okumadan süre: 0 s
Tamamlandıgerçek 0m18.736s
kullanıcı 0m0.004s
sys 0m0.000s
Yukarıda gösterildiği gibi, yürütme için aynı süreyi almıştır. Beklendiği gibi - aynı istatistikler: 3/4. Ancak, dd (conv = sync) için 0x00 ile sorunlu sektörleri pad iken , gddrescue bu işlevi eksik gibi görünüyor? Bunun yerine, sorunlu sektörü pozisyonuna herhangi bir şey yazmadan atlar ve bir sonraki sektörle devam eder (çıktı dosyasında bu sektör üzerinde zaten yazılı verilerim varsa - üzerine yazılmaz: bazen bu istenmeyebilir ). -T (truncate) seçeneğinin gddrescue ile bir blok cihaz için nasıl çalışacağından emin değilim(sanırım, tamamen 0x00 ile üzerine yazacak), ancak normal bir dosyada, tahmin edildiği gibi, tüm dosyayı yalnızca ofset boyutlarında (yani -o1) yaparak kesecektir. Bu, dd senkronizasyonuna biraz benzer , ancak tüm çıkış cihazının / dosyanın üzerine yazmaya hazırsanız, sadece tanımlayıcı işlevselliğini taklit edecek kadar uzak değildir.
Her ne kadar, ayrıntılı seçeneğin varlığı ve kötü sektörleri / blokları kaydetme yeteneği sayesinde - gddrescue daha iyi bir seçenek gibi görünüyor. Her iki uygulamanın da (hemen hemen) aynı parametrelerle başlatıldığını belirtmek önemlidir.
Çıktı
fark? .bin
boş (çıkış 0), yani dosyalar tamamen aynı.
İşte ben parçasıdır YAPMAYIN anlama:
küçük okumalar ve yazmalar yaptığı için dd hatasız şeylerde bile yavaştır. Olabildiğince hatasız şeyler okumak yerine, sürücünün hatalı kısımlarını çiğnemek için çok zaman harcıyor, daha sonra zor şeyleri yapmak için geri dönüyor.
Bütün bunlar ne hakkında? Özellikle " olabildiğince çok hatasız şeyler okumak yerine, sürücünün hatalı kısımlarını çiğnemek için çok fazla zaman harcıyor, sonra sert şeyleri yapmak için geri dönüyor "? Yukarıda gösterilenle aynı süreyi aldı (verilerin çok küçük bir bölümünü incelemiş olmama rağmen, bu önemli mi?).
gddrescue , "kötü bir sektörde" yeniden okuma miktarını kontrol etmesi gereken -r anahtarını sunar , ancak dd , -r0 ile birlikte çalışıyor gibi görünmektedir (aynı zamanda olduğu gibi). Peki, bu seçenek yalnızca "post-processing" için mi? Ne en alıyorum aslen hem olmasıdır dd ve gddrescue ile bitiyor gibi görünüyor -r0 ve gg olmak görünmüyor çiğneme herhangi aşkın hatalı parçaların içinden gddrescue (her ikisi de görünüyor durması 15-18 için kötü blokta saniye vermek veya almak, yani anlaşma nedir, gddrescue nasıl daha hızlı ???)
Ayrıca, -D seçeneği (çıktı dosyası için eşzamanlı yazma kullanın) ne için? Yapılan testlerin hiçbirinden fark görmedim.
Herkes her şey hakkında yorum yapabilir mi? Teşekkürler.