Это для скрипта bash/shell. По сути, я хочу отформатировать или стереть запоминающее устройство USB (или SD); с одной командной строкой.

Я собирался использовать fdisk , но, похоже, требуется взаимодействие с пользователем там, где я хочу автоматизации.

И тогда я решил попробовать обнулить его:
dd if=/dev/zero of=/dev/<target disk> ;
но это только кажется нулевым 2,0 ГБ свободного или неиспользованного дискового пространства.


root@linux:~# dd if=/dev/zero of=/dev/mmcblk0
dd: writing to '/dev/mmcblk0': No space left on device
3842249+0 records in
3842249+0 records out
1967230976 bytes (2.0 GB, 1.8 GiB) copied, 2.9054 s, 677 MB/s

В идеале я говорю о переформатировании любого съемного запоминающего устройства и / или подготовке его к изображению с помощью файла изображения .iso (через dd).

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

1 ответ1

2

Итак, это зависит от

  1. ваше определение «форматирования» диска;
  2. тип этого диска.

"Формат" может быть одним из самых запутанных терминов в потребительских технологиях. Даже ваш пост уже смущает два-три разных действия ...

Обычно он охватывает три уровня:

  1. Подготовка самого носителя (например, запись секторных маркеров на жесткий диск) - в настоящее время обычно выполняется на заводе, но, по крайней мере, в дни IBM PC это может быть сделано самим ПК. Это часто называют «низкоуровневым форматированием».

  2. Запись таблицы разделов (пустой или с некоторыми разделами) в первые несколько секторов диска - это то, что делает fdisk .

  3. Запись пустой файловой системы в каждый раздел - это то, что делает format c: или mkfs . Раньше это называлось «форматированием высокого уровня».

За исключением того, что некоторые люди называют шаг № 2 "низкоуровневым форматом" теперь, когда № 1 больше нет. И иногда люди называют стирание всего диска "форматированием", хотя там ничего не записано с реальным форматом. Иногда люди называют переустановку Windows "форматированием", даже если все файлы остались нетронутыми.


В любом случае, остальная часть ответа зависит от желаемого результата :

  • Если вы хотите, чтобы диск был полностью пустым (например, ничего, что могло бы найти приложение для восстановления данных), у вас есть два варианта: удаление или ручное удаление.

    Функция "сброс" называется TRIM в твердотельных накопителях и также поддерживается SD-картами - она говорит самому диску выбрасывать все данные. В Linux для этой цели можно использовать инструмент blkdiscard - укажите устройство, и через несколько секунд оно будет пустым. (Такие инструменты, как mkfs.ext4 , также автоматически отбрасывают содержимое раздела перед записью в него новой файловой системы.)

    Если диск не поддерживает удаление - например, если это магнитный жесткий диск или флэш-накопитель USB, интерфейс Mass Storage которого не понимает эту команду, - тогда единственным вариантом для вас является ручное отключение каждого сектора, т.е. заполнение это с /dev/zero как вы уже сделали.

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

  • Если вы не заботитесь об остаточных данных, а просто хотите, чтобы ОС увидела пустой диск, вы можете просто очистить область, где находится таблица разделов . Для MBR это всегда сектор 0, но не забывайте, что многие диски используют таблицу разделов GPT.

    Это очень быстрый метод, поскольку вам нужно всего лишь удалить несколько килобайт. В Linux команда wipefs сделает хирургическое содержимое диска более не распознаваемым для ОС. (По умолчанию инструмент выводит только то , что было бы удалить. - использовать параметр --all , чтобы сделать это на самом деле это сделать)

Кстати, теперь у вас есть диск, который ОС считает пустым.

  • Если вы хотите, чтобы на удаленном диске было несколько разделов, используйте такие инструменты, как fdisk или parted. В то время как регулярные FDISK является интерактивным, есть много инструментов , которые можно легко запрограммировать - sfdisk sgdisk parted несколько примеров. В Windows есть diskpart .

  • Если вы также хотите, чтобы разделы имели файловые системы, используйте такие инструменты, как mkfs.ext4 или mkfs.vfat (эквивалентный format Windows).


Наконец, как уже упоминалось в комментариях выше: если вы планируете просто записать изображение (файл .iso) на диск, то вам вообще не нужно ничего делать.

Такая запись изображения начинается в секторе 0, поэтому она удаляет все, что было на диске ранее (вплоть до размера изображения). Независимо от того, имел ли он разделы и файлы, или он был пустым, он не имеет значения - он просто перезаписывался собственными разделами изображения и всеми остальными.

Все, что не соответствует размеру изображения, останется таким, каким оно было, но ОС не будет заботиться об этом - поскольку таблица разделов образа говорит, что там нет раздела. Хотя, конечно, выбрасывать или очищать диск все еще хорошая идея, если вы собираетесь отдать его кому-то другому.

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