Как уничтожить только первую и последнюю часть устройства?
shred
командование (из coreutils
8.23) перезаписывает устройство с настраиваемыми данными от начала до конца, что идеально подходит для тех случаев использования, для которых оно предназначено (все они связаны с записью чего-либо на полное устройство).
В моем случае достаточно было бы сделать с x первыми байтами и y последними байтами устройства, что shred
относится ко всему устройству, но я, похоже, не нахожу хорошего решения, избегая указания явного значения (размера устройства и т. д.). Я мог бы написать из случайного источника в вычисляемую часть устройства с dd
, но тогда я должен получить размер устройства, бороться с MiB и MB и т. д. Может быть, есть что-то столь же удобное, как shred
(или я просто что-то упускаю).
В основном информация, связанная с разделением (gpt, таблица разделов msdos и резервные копии), размещается в начале и конце устройства.
1 ответ
Вы уверены, что действительно не хотите? wipefs
удалить подпись файловой системы с устройства?
dd
не так сложно в использовании, особенно получение правильных номеров от gparted
или же fdisk
, увидеть ниже.
Метод целого диска работает, как в dd if=/dev/zero of=/dev/sdx
, Возможно с bs=1M
увеличить скорость. Или заменить /dev/zero
с /dev/urandom` для более случайных данных. Как в " Безопасном стирании диска ArchWiki ".
Только для одного номера раздела "n", он же "sdxn", можно сделать dd if=/dev/zero of=/dev/sdxn
Только для "первых" n МБ вы можете сделать dd if=/dev/zero of=/dev/sdx bs=1M count=n
Для "начала" и "конца" вы можете узнать размер сектора диска и общее количество секторов - gparted
говорит вам это легко, в "View -> Device Info", и даже сообщает вам, где находятся начальный и конечный секторы раздела. parted
& fdisk
(для MBR) тоже должно.
Затем с помощью математики выясните, где можно стереть.
Крошечный (512b) точный способ - найти, какие сектора стереть. Если ваш диск имеет 512 байт секторов и имеет 251658240 секторов (это 120 ГБ,= 251658240 секторов * 512 байт / 1024, преобразуйте в k / 1024 в M / 1024 в G)...
- чтобы стереть последний 1G (гигабайт, G=1024*1024*1024 байта), вы можете вычислить сектора в 1 ГБ (1GB / 512b = 1 * 1024 * 1024 * 1024/512 = 2097152), а затем вычесть это из общего числа секторов 251658240 - 2097152 = 249561088 и начать с этого сектора для этого множества секторов:
dd if=/dev/zero of=/dev/sdx bs=512 seek=249561088 count=2097152
- чтобы стереть последний 1G (гигабайт, G=1024*1024*1024 байта), вы можете вычислить сектора в 1 ГБ (1GB / 512b = 1 * 1024 * 1024 * 1024/512 = 2097152), а затем вычесть это из общего числа секторов 251658240 - 2097152 = 249561088 и начать с этого сектора для этого множества секторов:
Вы могли бы преобразовать
bs
,seek
&count
вместо этого использовать M (M=1024*1024), если он слишком медленный - 512b за раз. Диск всегда начинается с 0, но заканчивается в 251658240 * 512/1024/1024 = 122880 в M.- Протрите последний 1G. В G 1024 M, поэтому пропустите 122880 - 1024 = 121856 M и выполните:
dd if=/dev/zero of=/dev/sdx bs=1M seek=121856 count=1024
- Протрите последний 1G. В G 1024 M, поэтому пропустите 122880 - 1024 = 121856 M и выполните:
Гигиеническая грубая оценка, отлично работает, когда запись за "концом" не наносит ущерба (сам конец диска, не стирая средний раздел). Попробуйте 1G (G=1024*1024*1024 байта) одновременно. Увидеть
man dd
для получения дополнительной информации, он понимает K, M, G, другие.- Последний г,
dd if=/dev/zero of=/dev/sdx bs=1G seek=119
пропустивcount
продолжать идти прямо до конца устройства.
- Последний г,
Или, для более быстрого способа записи "случайных" данных на весь раздел / диск, вы можете использовать dm-crypt:
Сначала создайте временный зашифрованный контейнер в разделе (sdXY) или на полном диске (sdX), который вы хотите зашифровать, например, используя параметры по умолчанию
# cryptsetup open --type plain /dev/sdXY container
Во-вторых, проверьте это существует
# fdisk -l Disk /dev/mapper/container: 1000 MB, 1000277504 bytes ... Disk /dev/mapper/container does not contain a valid partition table
Наконец, протрите его псевдослучайными (зашифрованными данными), использование / dev / urandom не требуется, поскольку шифровальный шифр используется для случайности:
# dd if=/dev/zero of=/dev/mapper/container dd: writing to ‘/dev/mapper/container’: No space left on device