В Интернете есть много статей, описывающих командную строку для создания образа 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 означает, что не нужно обрезать выходной файл — то есть, если выходной файл уже существует, просто заменить указанные байты и оставить остальную часть выходного файла без изменений.
использование notrunc
is по соображениям производительности. Нет смысла переписывать весь файл только для того, чтобы обновить несколько байт/кбайт/мегабайт/и т.д.
ПРИМЕЧАНИЕ:Окончательный ответ на этот вопрос должен быть в разделе вопросов и ответов StackOverflow, который@garethTheRedупоминается в комментариях под заголовком:Зачем использовать conv=notrunc при клонировании диска с помощью dd?. Ответ там превосходен и включает программу на C++, которая демонстрирует эффект, который O_TRUNC
он оказывает на блочные устройства и файлы.
решение2
Он не нужен, если вы хотите скопировать весь DVD в файл, который впоследствии будет содержать только полезную нагрузку этого DVD. На самом деле notrunc представляет риск для конфиденциальности и может вызвать переполнение носителя, если вы перезапишете старый файл, который больше полезной нагрузки DVD. В этом случае избыточные блоки старого файла останутся присоединенными к скопированному содержимому DVD. Таким образом, они будут скопированы на новый DVD вместе с файловой системой.
Весьма полезным оказался совет в комментарии starfry копировать только блоки файловой системы ISO 9660 (если это действительно ISO 9660), поскольку носитель DVD может содержать больше блоков, чем блоков файловой системы.