Когда dd подходит для копирования данных? (или, когда частичные read () и write ()) указывают на важное предостережение при использовании count
: dd
может копировать частичные блоки, поэтому при count
наличии он останавливается после заданного количества блоков, даже если некоторые из блоков были неполными. Таким образом, вы можете получить меньше bs * count
копируемых байтов, если вы не укажете iflag=fullblock
.
Размер блока по умолчанию для dd составляет 512 байт. count
это предел; как подсказывает ваш вопрос, это не требуется при копировании устройства конечного размера и действительно предназначено для копирования только части устройства.
Я думаю, что здесь есть два аспекта: производительность и восстановление данных.
Что касается производительности, в идеале вы хотите, чтобы размер блока был по крайней мере равным и кратным базовому размеру физического блока (следовательно, 2048 байт при чтении CD-ROM). Фактически в настоящее время вы также можете указывать большие размеры блоков, чтобы дать базовым системам кэширования возможность буферизовать вещи для вас. Но увеличение размера блока означает, dd
что нужно использовать гораздо больше памяти, и это может привести к обратным результатам, если вы копируете по сети из-за фрагментации пакетов.
Что касается восстановления данных, вы можете извлечь больше данных с неисправного жесткого диска, если вы используете блоки меньшего размера; это то, что программы, такие как, dd-rescue
делают автоматически: они сначала читают большие блоки, но если блок терпит неудачу, они перечитывают его с меньшими размерами блоков. dd
не буду этого делать, просто провалит весь блок.
dd bs=4m iflag=fullblock
vs,dd bs=1111
и обратите внимание на значительно более высокие скорости передачи данных, которые дает вам первая. Это связано с тем, что первое выравнивается с естественными размерами блоков на SD-карте, а второе требует, чтобы SD-контроллер выполнял много операций чтения, копирования и перепрошивки для записи частичных физических блоков.fullblock
Между прочим, важность не следует недооценивать, так как без нееbs
только максимальный, а частичное чтение может привести к постоянным последующим перекосам.