Tired of that classic f*cking problem where your hard drive is suddenly full and you have zero clue what’s eating all the space?
Yeah, me too. That’s exactly why I built diskr.
A fast, parallel CLI + TUI disk usage analyzer and safe cleaner for Linux, written in Rust.
Unlike du, ncdu, dust or dua-cli, diskr doesn’t just show you the numbers — it tells you what’s safe to remove, checks disk health, finds duplicates and dev caches, and watches for fallout after you clean.
Why diskr?
Most disk tools stop at “here’s what’s big”.
diskr goes further:
| Feature | What it gives you |
|---|---|
diskr doctor |
A–F grade + biggest reclaimable win right now |
| Real on-disk size | Uses st_blocks, not just apparent size |
| Safe cleanup | Trash only — never rm -rf |
| Post-delete watcher | journalctl + lsof monitoring for 24 hours |
| Dev-cache & duplicate hunter | Built-in, no extra tools needed |
| SMART health | Temperature, reallocated sectors, wear level |
Features
Core
diskr doctor— One-shot dashboard with overall grade, health risks, exposed credentials, and the single biggest reclaimable chunk (with the exact command)- SMART health check — Model, temperature, power-on hours, reallocated sectors, wear level
- Parallel filesystem scan —
jwalk+rayon, real on-disk size, symlink & mount-point aware - Interactive TUI — Directory tree sorted by size (
ratatui+crossterm)
Smart Finders
- Large-file finder (configurable size threshold)
- Stale-file finder (not accessed in N days)
- Unused-app detector (cross-references
apt/snapwith real usage signals) - Dev-cache detector (
node_modules,target,__pycache__,.venv,.next, and more) - Three-stage duplicate finder (size → quick blake3 hash → full verification)
Safety & Cleanup
- Everything goes to trash — never hard-deleted
- Protected system paths are always excluded
- Dry-run mode generates an editable bash script for review
- Post-delete watcher keeps an eye on journalctl and open handles for 24h
Extras
- Docker overlay2 / volume bloat detector + optional prune
- Sensitive-file scanner (SSH keys,
.env,.pem, credentials in Downloads/Desktop) - Hardlink-aware size accounting
- JSON output for automation
- Undo history + config file support
Quick Start
# Install (when published)
# Or build from source
Most useful commands
TUI controls
| Key | Action |
|---|---|
j / k or arrows |
Move |
Enter / l |
Open directory |
Backspace / h |
Go up |
space |
Mark item |
q |
Quit |
Comparison
| Tool | Shows sizes | Safe cleanup | Disk health | Dupes + caches | Post-delete watch |
|---|---|---|---|---|---|
du |
yes | no | no | no | no |
ncdu |
yes | manual only | no | no | no |
dust |
yes | no | no | no | no |
dua-cli |
yes | interactive delete | no | no | no |
| diskr | yes | trash + dry-run | SMART | yes | yes (24h) |
Safety Model
- Every delete goes through the OS trash — never a hard delete
- Protected prefixes (
/,/usr,/etc,/boot,/bin,/sys,/proc,/dev,/root,/var/lib,/var/log, …) can never appear in a clean plan - Nothing is removed without
--yes --dry-runavailable on every destructive command- Generated cleanup script is fully reviewable before execution
Project Layout
diskr/
├── Cargo.toml
├── src/
│ ├── main.rs
│ ├── cli.rs
│ ├── config.rs
│ ├── history.rs
│ ├── scanner/ # parallel walk, real on-disk size, blake3 hashing
│ ├── analyzer/ # size, age, duplicates, caches, health, docker, apps
│ ├── cleaner/ # trash integration + protected-path rules
│ ├── health/ # post-delete watcher + log analysis
│ └── ui/ # ratatui TUI
└── tests/
Building & Testing
Requires Linux.
Optional tools (smartctl, journalctl, apt/snap, docker) degrade gracefully if missing — the core still works.
Status
Verified with cargo build, cargo test, and manual runs of every subcommand against real temp-directory fixtures.
Contributing
Contributions are welcome!
- Open an issue for bugs or feature ideas
- Send a pull request
- Improve docs or add tests
Any help is appreciated — even small PRs make a difference.
Star the repo
If diskr saves you from another “why is my disk full?” night, please give it a star.
It helps more people discover the project and keeps the motivation going.