Коли DD підходить для копіювання даних? (або, коли read () і write () часткові) вказує на важливий застереження при використанні count: ddможе копіювати часткові блоки, тож коли countце буде припинено після заданої кількості блоків, навіть якщо деякі блоки були неповними. Тому ви можете bs * countскопіювати менше байтів, скопійованих, якщо не вказати iflag=fullblock.
Типовий розмір блоку для dd - 512 байт. countє межа; так як ваше запитання натякає, що воно не потрібно при копіюванні пристрою обмеженого розміру, і воно дійсно призначене для копіювання лише частини пристрою.
Я думаю, що тут слід врахувати два аспекти: продуктивність та відновлення даних.
Що стосується продуктивності, то в ідеалі ви хочете, щоб розмір блоку був принаймні рівним і кратним основного фізичного розміру блоку (отже, 2048 байт при читанні CD-ROM). Насправді нині ви можете також вказати більші розміри блоків, щоб дати можливість базовим системам кешування шафікувати речі для вас. Але збільшити розмір блоку означає, ddщо потрібно використовувати набагато більше пам’яті, і це може бути контрпродуктивно, якщо ви копіюєте через мережу через фрагментацію пакетів.
Що стосується відновлення даних, ви можете отримати більше даних з несправного жорсткого диска, якщо ви використовуєте менші розміри блоків; це те, що такі програми dd-rescueроблять автоматично: спочатку вони читають великі блоки, але якщо блок не вдається, вони перечитують його з меншими розмірами блоків. ddне зробиш цього, просто вийде з ладу весь блок.
dd bs=4m iflag=fullblockvsdd bs=1111і помітьте значно більшу швидкість передачі даних, яку вам дасть перша. Це відбувається тому, що перший вирівнюється з натуральними розмірами блоків на SD-картці, а другий вимагає, щоб контролер SD робив багато читання, копіювання та перепрошивки для запису часткових фізичних блоків. Доfullblockречі, важливість не слід недооцінювати, оскільки без неїbsє лише максимум, і часткове читання може призвести до стійких подальших невідповідностей.