LINUX.ORG.RU

dd bs= точно не обрезает файл/образ, если последний кусок меньше, чем размер буфера?

 


0

1

Может показаться глупым вопросом, но хочу его задать, чтобы быть точно уверенным в безопасности своих действий.

dd (при использовании bs= со значением, не кратным размену if= файла/диска) не будет игнорировать последний кусок, который не заполнит буфер целиком, верно? Т.е. использование любого буфера безопасно?

И ещё: чем копировать, чтобы перенос данных был асинхронным (буфер начинает заполняться даже если не опустошился полностью, буфер начитает выгружаться, даже если не заполнился полностью)?

☆☆☆

Последнее исправление: ktulhu666 (всего исправлений: 1)

На привычных нам блочных носителях - точно. Сколько раз копировал образы с bs=1M - ничего не обрезал.

border-radius
()
Ответ на: комментарий от border-radius

Да, точно. Сейчас пробовал с разными не кратными размерами буфера (также и не кратным 512) на файле (не кратном 512-ти). Всё ок.

ktulhu666 ☆☆☆
() автор топика

И ещё: чем копировать, чтобы перенос данных был асинхронным (буфер начинает заполняться даже если не опустошился полностью, буфер начитает выгружаться, даже если не заполнился полностью)?

Могу ошибаться, но по дефолту он вроде как раз асинхронный, а синхронный нужно включить через conv=sync.

border-radius
()
Ответ на: комментарий от border-radius

conv=sync — это про другую синхронность, если в источники не удастся прочитать блок, то в приемнике его содержимое будет заменено нулями, а в nosync — просто пропущено.
ps. Если точнее, то дополнено нулями (пробелами при block/unblock) до obs.

bormant ★★★★★
()
Последнее исправление: bormant (всего исправлений: 2)
Ответ на: комментарий от bormant

Ага, ясно. Кстати, при помощи смещений и conv=notrunc dd можно использовать для патчинга чего-либо.

border-radius
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.