62 lines
4.3 KiB
Markdown
62 lines
4.3 KiB
Markdown
# erase-storage.sh
|
||
|
||
Изтрива един дял с еднократен запис на нули или псевдослучайни данни, или
|
||
използва поддържания от устройството ATA Secure Erase/NVMe Sanitize за цял диск.
|
||
|
||
## Какво прави
|
||
|
||
При подаване на дял, скриптът записва точно размера на целия дял един път. По подразбиране
|
||
използва нули; може да се избере и `/dev/urandom`. Изисква root права,
|
||
проверява че устройството не е монтирано, не е активен swap и не участва в
|
||
root filesystem, след което иска потвърждение чрез въвеждане на точния път.
|
||
|
||
При подаване на цял диск скриптът проверява поддръжката преди да продължи.
|
||
За NVMe избира наличния Sanitize метод в следния ред: Crypto Erase, Block
|
||
Erase, Overwrite. За ATA избира Enhanced Security Erase, ако устройството го
|
||
обявява, иначе стандартен Security Erase. Ако методът не може да бъде
|
||
потвърден, устройството е замразено/вече е с активирана ATA защита или
|
||
информацията за capability е неясна, скриптът отказва да продължи. Преди
|
||
изтриването на цял диск показва отделно предупреждение и изисква две
|
||
потвърждения, като второто е точното име на устройството.
|
||
|
||
**Изтриването е необратимо и при режим за цял диск засяга всички дялове.**
|
||
В началото скриптът предупреждава, че работата може да продължи часове, и
|
||
изисква `yes` за продължаване или `no` за прекратяване. Не изключвай,
|
||
рестартирай или приспивай компютъра и не прекъсвай захранването или връзката
|
||
с диска. За дял следва отделно потвърждение с точния device path; за цял диск
|
||
следват две допълнителни потвърждения. При прекъсване на ATA
|
||
Security Erase устройството може да остане заключено с временната парола,
|
||
посочена в съобщението за грешка. Secure Erase/Sanitize зависи от коректната
|
||
реализация във firmware на устройството; скриптът не може да гарантира
|
||
възстановимост или физическо състояние на носителя.
|
||
|
||
## Изисквания
|
||
|
||
- Linux, Bash и root права (`sudo`)
|
||
- `lsblk`, `findmnt`, `swapon`, `dd` и GNU/Linux стандартни помощни команди
|
||
- За NVMe: `nvme-cli` и `jq`
|
||
- За ATA: `hdparm`
|
||
|
||
## Употреба
|
||
|
||
```bash
|
||
sudo ./HDD/erase-storage.sh --help
|
||
sudo ./HDD/erase-storage.sh /dev/sda1
|
||
sudo ./HDD/erase-storage.sh /dev/nvme0n1p2 random
|
||
sudo ./HDD/erase-storage.sh /dev/sda
|
||
sudo ./HDD/erase-storage.sh /dev/nvme0n1
|
||
```
|
||
|
||
`dev/sda1` без начална наклонена черта също се приема като `/dev/sda1`.
|
||
|
||
| Аргумент | Описание |
|
||
|----------|----------|
|
||
| `DEVICE` | Block device — дял или цял диск |
|
||
| `zero` | Един проход с нули върху дял; режим по подразбиране |
|
||
| `random` | Един проход с псевдослучайни данни върху дял |
|
||
| `-h`, `--help` | Показва помощта и приключва |
|
||
|
||
Режимът `zero`/`random` не е Secure Erase и не гарантира изтриване на
|
||
пренасочени или недостъпни физически сектори. При SSD не използвай обикновен
|
||
запис към дял като гаранция за заличаване; използвай само успешно завършен
|
||
Sanitize/Secure Erase, поддържан от устройството. |