Может dd перезаписывать смежные разделы

Был бы

dd if=/dev/zero of=somepartition bs=512

также вытрите разделы после somepartition или остановитесь в конце somepartition?

15
задан 26 October 2017 в 00:46

5 ответов

Перезапишите раздел с dd

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

Но если Вы проверяете и перепроверяете, можно использовать его.

dd if=/dev/zero of=somepartition bs=512

или я предложил бы

dd if=/dev/zero of=/dev/sdxn bs=4096

где x буква диска и n число раздела и размер блока, 4 096 байтов делают процесс записи быстрее.

Важно, чтобы Вы записали в раздел в этом случае. Если Вы пишете в целый диск (конец головки диска) /dev/sdx целый диск будет перезаписан. Но запись в раздел будет прервана в конце раздела, и разделы позади него будут сохранены. (Я протестировал теперь на USB pendrive в Lubuntu 16.04 LTS, таким образом, я знаю, что он работает как этот.)

Исключение для расширенного раздела

Существует исключение для расширенного раздела (который является контейнером для логических разделов, чтобы иметь больше чем четыре раздела в таблице разделов MS-DOS). Это описано в следующей ссылке,

Я могу сделать изображение 'расширенного' раздела с помощью dd?

Но также существует другая проблема. Я протестировал Вашу команду в тестовой среде, и dd один кибибайт только для чтения (1 024 байта), когда я хотел, чтобы это сделало изображение из расширенного раздела.

Я протестировал также это теперь на USB pendrive в Lubuntu 16.04 LTS, и это относится к записи (а также к чтению). Только первый кибибайт перезаписывается.

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

18
ответ дан 23 November 2019 в 02:43

Записи к устройству раздела не запишут за пределами того раздела с dd или чем-либо еще. Необходимо было бы использовать wholedisk устройство, чтобы иметь любой эффект за пределами единственного раздела.

(Протест: если Ваш диск не имеет таблицу разделов с перекрывающимися разделами, которых никогда не должно происходить.)

4
ответ дан 23 November 2019 в 02:43

Я думаю, что Ваш вопрос основан на фундаментальном недоразумении о как dd (и на самом деле подобные Unix операционные системы в целом) работа:

dd не может перезаписать смежные разделы, просто потому что dd не может перезаписать разделы, период.

dd просто записи в файлы.Именно.

Теперь, если Вы передаете dd файл, который представляет несколько разделов, затем dd перезапишет тот файл. Но в этом случае, это не dd запись мимо конца раздела. dd все еще запишет до конца файла, и только до конца файла.

Но, если Вы передаете dd файл, который только представляет один раздел, затем dd не запишет мимо конца этого раздела. Снова, это не имеет никакого отношения dd. dd просто записи в файл Вы говорите этому писать в. То, что этот файл представляет единственный раздел (в этом случае) обеспечено драйвером блочного устройства в ядре. dd не имеет никакого отношения к этому.

Так, короче говоря: dd записи в файлы. То, что представляют те файлы, не является ни одним из ddбеспокойство. dd ничего не знает о разделах.

4
ответ дан 23 November 2019 в 02:43

Существует опасный, но редкий специальный сценарий, в котором это могло произойти даже с неошибочными драйверами блочного устройства:

  • Таблица разделов на диске изменяется способом, что раздел x изменен для окончания на нижней границе, чем прежде. Или раздел y позади него изменен главный запуск на нижней границе, или новый раздел y добавляется в пространство.
  • Раздел y заполнен соответствующими данными средствами, которые независимы от таблицы разделов, например, использующий dd с опциями пропуска/количества на устройстве целого дискового блока (например,/dev/sda)
  • ioctl, который говорит ядру перечитывать таблицу разделов, не выпущен или перестал работать из-за занятых устройств
  • Раздел x записан в любым процессом, который пытается записать в него, пока он не поражает состояние ошибки.
1
ответ дан 23 November 2019 в 02:43

Необходимо быть осторожными с dd, как будто Вы делаете ошибку, можно перезаписать больше, чем Вы заключили сделку на, и он зависит от того, что Вы используете dd для (OP был неопределенен в его использовании dd и точном синтаксисе команды dd).

При определении раздела, он запишет в тот раздел, пока раздел не будет полон.

Если Вы сделаете ошибку и поместите весь диск, например, =/dev/sda, то dd запишет в весь диск, начинают заканчивать игнорировать (и перезаписывать) Ваша таблица разделов.

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

dd if=/dev/zero of=/path/to/mount_point/zero_file bs=4096
rm -f /path/to/mount_point/zero_file

В зависимости от того, что Вы делаете, однако, можно хотеть использовать альтернативный инструмент для безопасного удаления файлов. Посмотрите, Как удалить файл (файлы) безопасным способом? для опций.

0
ответ дан 23 November 2019 в 02:43

Другие вопросы по тегам:

Похожие вопросы: