
Я пытаюсь написать скрипт для выполнения некоторых действий с USB-накопителем, удаления всех разделов, которые он встретит, и создания новых (подробнее вэта ссылка).
Когда я выполняю действия с помощью GParted, все работает отлично, в частности, когда создаются новые разделы со своими файловыми системами, все старые данные удаляются (и эта операция не занимает много времени для того контента, с которым я работаю).
Но когда я проделываю эквивалентные действия с fdisk
, я всегда нахожу старые данные в том же старом разделе, что и раньше!
Как мне поступить так, чтобы данные старых разделов были полностью стерты (и так же быстро, как это происходит с GParted)?
Я пробовал команды dd if=/dev/zero of=/dev/sdb bs=512 count=1
и shred -vzn 0 /dev/sdb
подобные им, но они либо не удаляли файлы, либо делали это слишком долго по сравнению с GParted.
решение1
В fdisk
. В отличие от GParted, он вообще не занимается файловыми системами и содержимым разделов — это нужно делать вручную.
Кроме того, вы не объяснили, как вы определили, что "старые данные исчезли" – вы проверили фактическое устройство раздела или просто смонтировали и ls? Раздел может быть заполнен мусором, и это не имеет значения, пока файловая система сообщает, что "в корневом каталоге 0 файлов".
Я сомневаюсь, что у GParted есть функция полной очистки раздела – скорее всего, он просто создал новую файловую систему.наверхутого, что там было раньше. (Тем не менее, на SSD-накопителях mkfs
инструментыделать(Удалить весь раздел с помощью TRIM, что происходит практически мгновенно. Однако с жесткими дисками ничто не может заставить диск вращаться быстрее – dd не может быть намного медленнее GParted.)
Итак, следующего должно быть достаточно:
- Используйте
wipefs --all /dev/xxx
для стирания распознаваемых структур файловой системы, - Используйте
mkfs.ext4 /dev/xxx
(или mkfs.whatever-else) для создания пустой файловой системы.