zfsdu/README.md

111 lines
4.0 KiB
Markdown

# zfsdu - ZFS Disk Usage
A ncdu-like TUI application for ZFS with snapshot management. Navigate your ZFS pools, datasets, and volumes in a tree view, and manage snapshots interactively.
![License](https://img.shields.io/badge/license-CDDL-blue.svg)
## Quick Install
```bash
curl -sSL https://gitlab.datazone.de/kidev/zfsdu/-/raw/main/install-binary.sh | sudo bash
```
## Features
- **Tree View**: Hierarchical display of ZFS pools, datasets, and volumes
- **Expand/Collapse**: Navigate the tree structure interactively
- **Snapshot Management**: Mark and delete multiple snapshots at once
- **Size Visualization**: Bar graphs showing relative sizes
- **Search**: Find datasets or snapshots by name
- **Filter**: Filter the view to show only matching items
- **Bulk Selection**: Select/unselect all visible snapshots (like Midnight Commander)
- **Scrolling**: Handle large ZFS hierarchies with scrollbar indicator
- **MC-Style UI**: Classic Midnight Commander look and feel
## Screenshot
```
┌─────────────────────────────────────────────────────────────────────────┐
│ Name Size │
│─────────────────────────────────────────────────────────────────────────│
│ ▾ rpool 500.0G █████ │
│ ├──▾ ROOT 120.0G ██ │
│ │ ├── pve-1 80.0G █ │
│ │ └──○ @autosnap_2024-01-15 12.0G │
│ └──▸ data 380.0G ████ │
│ ▸ tank 2.0T █████ │
├─────────────────────────────────────────────────────────────────────────┤
│ 8 items │
└─────────────────────────────────────────────────────────────────────────┘
F1 Help F5 Refr F8 Del / Search f Filter e Expand c Collapse
```
## Installation
### Binary (recommended)
```bash
curl -sSL https://gitlab.datazone.de/kidev/zfsdu/-/raw/main/install-binary.sh | sudo bash
```
### Build from Source
```bash
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env
# Clone and build
git clone https://gitlab.datazone.de/kidev/zfsdu.git
cd zfsdu
cargo build --release
# Install
sudo cp target/release/zfsdu /usr/local/bin/
```
## Usage
```bash
zfsdu
```
### Keyboard Shortcuts
| Key | Action |
|-----|--------|
| **Navigation** | |
| ↑/k, ↓/j | Move up/down |
| Enter/→/l | Expand/collapse dataset |
| Home/End | First/last item |
| PgUp/PgDn | Page up/down |
| **Tree** | |
| e | Expand all |
| c | Collapse all |
| **Selection** | |
| Space | Mark/unmark snapshot |
| + | Select all visible snapshots |
| - | Unselect all visible snapshots |
| * | Invert selection |
| **Search & Filter** | |
| / | Search (n=next, N=prev) |
| f | Filter visible items |
| Esc | Clear filter |
| **Actions** | |
| d / F8 | Delete marked snapshots (2x to confirm) |
| r / F5 | Refresh |
| q / F10 | Quit |
| F1 | Help |
## Requirements
- Linux with ZFS installed
- Terminal with UTF-8 support
- Root privileges (for snapshot deletion)
## License
CDDL (Common Development and Distribution License) - same as OpenZFS.
See [LICENSE](LICENSE) for details.