почему люди используют «notrunc» при создании ISO-образа с DVD?

почему люди используют «notrunc» при создании ISO-образа с DVD?

В Интернете есть много статей, описывающих командную строку для создания образа ISO с диска DVD-Video, например:

dd if=/dev/sr0 of=mydvd.iso conv=noerror,sync,notrunc

Я хотел бы понять, почему notruncэто необходимо. Насколько мне известно и на manстранице команды, notruncэто предотвращает усечение выходного файла. Это в основном означает, что если файл существует, ddпросто перезаписывает то, что уже есть; если там есть содержимое, которое ddне трогает (возможно, путем поиска в другой точке файла), то это исходное содержимое остается нетронутым.

Создавая ISO-образ, вы наверняка хотите начать с нового, чистого, пустого файла?

Единственное, что я могу придумать, это в случае действительно плохого диска, использование notruncпозволяет вам запускать одну и ту же команду dd несколько раз для одного и того же выходного файла, надеясь заполнить каждый раз разные биты. Если выходной файл не существует, то это notruncне имеет никакого эффекта.

Это все или есть какая-то другая причина, на которую все указывают notrunc?

(Я не спрашиваю, как обойти CSS, ARccOS или что-то еще; просто об ddиспользовании)

решение1

Если бы мне пришлось угадывать, основываясь на этом комментарии отСтатья в Википедии оdd:

Параметр преобразования notrunc означает, что не нужно обрезать выходной файл — то есть, если выходной файл уже существует, просто заменить указанные байты и оставить остальную часть выходного файла без изменений.

использование notruncis по соображениям производительности. Нет смысла переписывать весь файл только для того, чтобы обновить несколько байт/кбайт/мегабайт/и т.д.

ПРИМЕЧАНИЕ:Окончательный ответ на этот вопрос должен быть в разделе вопросов и ответов StackOverflow, который@garethTheRedупоминается в комментариях под заголовком:Зачем использовать conv=notrunc при клонировании диска с помощью dd?. Ответ там превосходен и включает программу на C++, которая демонстрирует эффект, который O_TRUNCон оказывает на блочные устройства и файлы.

решение2

Он не нужен, если вы хотите скопировать весь DVD в файл, который впоследствии будет содержать только полезную нагрузку этого DVD. На самом деле notrunc представляет риск для конфиденциальности и может вызвать переполнение носителя, если вы перезапишете старый файл, который больше полезной нагрузки DVD. В этом случае избыточные блоки старого файла останутся присоединенными к скопированному содержимому DVD. Таким образом, они будут скопированы на новый DVD вместе с файловой системой.

Весьма полезным оказался совет в комментарии starfry копировать только блоки файловой системы ISO 9660 (если это действительно ISO 9660), поскольку носитель DVD может содержать больше блоков, чем блоков файловой системы.

Связанный контент