Как безопасно стереть данные с диска в Linux с помощью shred

Кратко
shred перезаписывает файлы, разделы или целые диски, чтобы затруднить восстановление данных. Это подходит для сырого доступа к блочным устройствам, но не всегда эффективно на современных файловых системах с журналированием, снимками или слоями кеширования. Читайте ниже — команды, ограничения и безопасные альтернативы.
О чём этот материал
В статье описано, как использовать утилиту shred для очистки разделов и дисков в Linux. Приведены примеры команд, предупреждения о совместимости с файловыми системами и практические альтернативы (dd, blkdiscard, ATA Secure Erase). В конце — чек-лист и 1‑строчное глоссарий.
Почему простое удаление файлов недостаточно
Когда вы удаляете файл (rm), удаляется лишь указатель в файловой системе — данные остаются на диске и могут быть восстановлены специальным ПО. Даже запись нулями не всегда гарантирует, что данные восстановить невозможно, особенно при наличии резервных копий, снимков или кешей.
1 О приложении shred в Linux
shred может перезаписывать отдельные файлы и блочные устройства (разделы, диски). Если изучить man‑страницу shred, там есть важное предупреждение — мы приводим перевод строки из man:
ВНИМАНИЕ: shred полагается на важное предположение: файловая система перезаписывает данные «на месте». Это традиционное поведение, но многие современные дизайны файловых систем не удовлетворяют этому условию. Примеры файловых систем, на которых shred малоэффективен или не гарантирует эффективности во всех режимах:
* файловые системы с лог-структурой или журналированием, такие как те, что идут с AIX и Solaris (и JFS, ReiserFS, XFS, Ext3 и т.д.)
* файловые системы, которые записывают избыточные данные и продолжают работу, даже если некоторые записи не удались (например, RAID)
* файловые системы со снимками (snapshots), такие как некоторые реализации NFS/NetApp
* файловые системы, которые кэшируют данные во временных местах, например клиенты NFS версии 3
* сжатые файловые системы
В случае ext3 это ограничение применяется только в режиме data=journal, когда журналируются данные файлов, а не только метаданные. В режимах data=ordered (по умолчанию) и data=writeback shred работает как обычно. Режимы журналирования ext3 можно менять через опции монтирования (data=...), например в /etc/fstab.
Важно: это предупреждение актуально, если вы используете shred для отдельных файлов. Если вы используете shred на блочном устройстве целиком (/dev/sda или /dev/sda5), многие из указанных проблем не применимы — но есть исключения (RAID-контроллеры, аппаратный кеш, SSD и т.д.).
2 Как использовать shred (основные примеры)
Перед стиранием системного раздела загрузитесь в live‑систему (например, Ubuntu Live, Knoppix или rescue-среда хостера). Для локальных несистемных разделов это не требуется.
Проверьте, установлен ли shred:
which shred
Если команда не найдена, в Debian/Ubuntu установите coreutils (shred входит в него):
apt-get install coreutils
Пример перезаписи раздела /dev/sda5 десятью проходами с отображением прогресса и финальным заполнением нулями:
shred -vfz -n 10 /dev/sda5
Ключи:
- -v: показывать прогресс
- -f: принудительно изменить права, если нужно для записи
- -z: выполнить финальную перезапись нулями, чтобы скрыть явные следы «шрединга»
- -n N: число проходов (по умолчанию 3)
Для RAID‑устройств, например /dev/md1, то же самое:
shred -vfz -n 10 /dev/md1
Для полного диска /dev/sda:
shred -vfz -n 10 /dev/sda
Замечание: время выполнения прямо пропорционально объёму диска и количеству проходов. На больших дисках и при множестве проходов операция может занимать часы.
Важно: для SSD и NVMe‑накопителей shred часто неэффективен из‑за уровня абстракции контроллера (wear leveling, overprovisioning). Для SSD лучше использовать аппаратную команду ATA Secure Erase или blkdiscard, если поддерживается.
Альтернативные и дополняющие методы
- ATA Secure Erase — аппаратная команда контроллера диска; быстро и эффективно для HDD и поддерживаемых SSD. Требует hdparm и прямого доступа к устройству.
- blkdiscard — отправляет TRIM/Discard на блочное устройство (полезно для NVMe/SSD), но эффективность зависит от реализации контроллера и BIOS.
- dd с /dev/zero или /dev/urandom: простая запись случайных данных или нулей, но медленнее и не даёт преимуществ над shred на блочных устройствах.
- Удаление шифровального ключа при использовании full‑disk encryption (наиболее быстрый способ «стереть» данные — уничтожить ключ шифрования).
Когда shred не сработает
- Файлы на журналируемых или копирующих файловых системах (например, btrfs, ZFS, некоторые режимы ext3/4) — данные могут остаться в журнале или снимках.
- SSD с wear leveling: перезаписи не гарантируют физическое уничтожение блоков.
- Аппаратный RAID, если контроллер скрывает физические диски — перезапись виртуального устройства может не коснуться всех копий.
Шпаргалка команд и чек‑лист перед стартом
Команды:
which shred
shred -vfz -n 10 /dev/sdX
shred -vfz -n 10 /dev/mdY
apt-get install coreutils
Чек‑лист перед выполнением:
- Снимите бэкап всех нужных данных и проверьте бэкап.
- Убедитесь, что вы выбрали правильное устройство (lsblk, fdisk -l).
- Загрузитесь в live‑систему, если нужно стереть раздел, используемый системой.
- Проверьте, не настроены ли зеркала/RAID/аппаратные кеши, которые могут потребовать других процедур.
- Для SSD рассмотрите ATA Secure Erase или blkdiscard.
Критерии приёмки
- Для блочных устройств: команда завершилась без ошибок, диск перезаписан, размер и тип устройства совпадают с ожидаемым.
- Для SSD: подтверждена поддержка Secure Erase/blkdiscard и команда выполнена успешно.
Модель принятия решения (простой эвристический алгоритм)
- Это HDD или SSD? (HDD → shred/ATA; SSD → Secure Erase/blkdiscard/удаление ключа)
- Есть ли аппаратный RAID или контроллер? (Да → консультируйтесь с вендором/удалите данные на физических дисках)
- Располагаются ли данные на файловой системе с журналированием/снимками? (Да → работать с блочным устройством или использовать шифрование)
Краткий глоссарий
- shred: утилита для многократной перезаписи файлов/устройств
- ATA Secure Erase: встроенная функция контроллера диска для полного очищения
- blkdiscard: отправляет команду дискард (TRIM) блочному устройству
Итог и рекомендации
shred — полезный инструмент для перезаписи блочных устройств и старых HDD, но имеет ограничения: будьте осторожны с журналируемыми файловыми системами, SSD и аппаратными RAID. Для SSD и в средах с снапшотами рассмотрите аппаратные команды или уничтожение ключей шифрования. Всегда делайте резервные копии и проверяйте целевое устройство перед выполнением.
Примечание
Если вы не уверены в типе устройства или возможных побочных эффектах, лучше получить консультацию системного администратора или производителя оборудования.