1

Я пытаюсь написать скрипт для выполнения некоторых действий с USB-портом, удаляя любые разделы, с которыми он сталкивается, и создавая новые (подробнее в этой ссылке).

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

Но когда я делаю эквивалентную процедуру с fdisk , я всегда нахожу старые данные в том же старом разделе, что и раньше!

Как мне сделать так, чтобы данные старых разделов были полностью стерты (и так же быстро, как это происходит с GParted)?

Я пробовал команды dd if=/dev/zero of=/dev/sdb bs=512 count=1 и shred -vzn 0 /dev/sdb или аналогичные, но либо они на самом деле не будут удалять файлы, либо они будут занимать слишком много время сделать это по сравнению с GParted.

1 ответ1

2

В fdisk такого нет. В отличие от GParted, он вообще не касается файловых систем и содержимого разделов - вам нужно сделать это вручную.

Кроме того, вы не объяснили, как вы определили, что "старые данные пропали" - вы проверяли фактическое устройство раздела или просто монтировали его? Раздел может быть полон мусора, и это не имеет значения, если файловая система говорит: "В корневом каталоге 0 файлов".

Я сомневаюсь, что у GParted есть функция для полного очищения раздела - более вероятно, что он просто создал новую файловую систему поверх того, что было там ранее. (Тем не менее, на твердотельные накопители, то mkfs инструменты делают отбрасывать весь раздел с помощью TRIM, которая почти мгновенно. Однако с жесткими дисками ничто не может заставить диск вращаться быстрее - dd не может быть намного медленнее, чем GParted.)

Так что следующего должно быть достаточно:

  1. Используйте wipefs --all /dev/xxx чтобы стереть распознаваемые структуры файловой системы,
  2. Используйте mkfs.ext4 /dev/xxx (или mkfs.whwhat-else) для создания пустой файловой системы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .