Add initial scripts and project conventions

This commit is contained in:
dido committed 2026-09-27 12:09:46 +03:00
1 parent af9f32facc
commit c777cf115b
14 files changed
+982 -9

No files matched your search

+58
View File
@@ -0,0 +1,58 @@
# 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 е неясна, скриптът отказва да продължи. Преди
изтриването на цял диск показва отделно предупреждение и изисква две
потвърждения, като второто е точното име на устройството.
**Изтриването е необратимо и при режим за цял диск засяга всички дялове.**
Не прекъсвай захранването или връзката с диска. При прекъсване на 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, поддържан от устройството.