DD ne zaman veri kopyalamak için uygundur? (veya, okunduğunda () ve write () kısmi) kullanıldığında önemli bir uyarıyı işaret eder count
: dd
kısmi blokları kopyalayabilir, böylece verildiğinde count
, bazı bloklar eksik olsa bile, verilen blok sayısından sonra duracaktır. Bu nedenle bs * count
, siz belirtmedikçe, kopyalanan bayttan daha azıyla sonuçlanabilir iflag=fullblock
.
Varsayılan blok boyutu aa 512 bayttır. count
bir sınırdır; sorunuzun ima ettiği gibi, sonlu boyutlu bir cihaz kopyalanırken gerekli değildir ve gerçekten cihazın yalnızca bir kısmını kopyalamak için tasarlanmıştır.
Burada dikkate alınması gereken iki nokta olduğunu düşünüyorum: performans ve veri kurtarma.
Performans söz konusu olduğunda, ideal olarak blok boyutunun altta yatan fiziksel blok boyutuna (ve bir CD-ROM okurken 2048 bayt) en azından eşit ve bunun katları olmasını istersiniz. Aslında günümüzde, alttaki önbellek sistemlerine sizin için bir şeyleri tamponlama şansı vermek için daha büyük blok boyutları da belirleyebilirsiniz. Ancak blok boyutunu artırmak, dd
daha fazla bellek kullanmak zorunda demektir ve paket parçalanması nedeniyle bir ağ üzerinden kopyalama yapıyorsanız karşı üretken olabilir.
Veri kurtarma söz konusu olduğunda, daha küçük blok boyutları kullanırsanız, arızalı bir sabit diskten daha fazla veri alabilirsiniz; Bu gibi programlar dd-rescue
otomatik olarak yapılır: başlangıçta büyük blokları okurlar, ancak bir blok başarısız olursa daha küçük blok boyutlarıyla yeniden okurlar. dd
bunu yapmayacak, sadece tüm bloğu başarısız olacak.
dd bs=4m iflag=fullblock
vs kullanarakdd bs=1111
ve öncekinin size vereceği çok daha yüksek veri hızlarına dikkat edin. Bunun nedeni, ilkinin SD kartta doğal blok boyutlarıyla hizalanması, ikincisinin ise SD denetleyicinin kısmi fiziksel bloklar yazmak için çok fazla okuma, kopyalama ve yeniden tepki vermesini gerektirmesidir. Bufullblock
arada, onsuzbs
, sadece maksimum ve kısmi okumaların kalıcı olarak sonraki yanlış hizalamalara yol açabileceğinden, önemi göz ardı edilmemelidir .