zfsctl
A terminal UI and daemon for managing ZFS. One screen for pools, datasets, snapshots, disks, shares and boot environments; a daemon that runs your snapshot, replication, backup and scrub jobs and tells you when something needs attention. It manages other machines over ssh, with no agent to install on them.
the dashboard
Dashboard · Sat 24 Oct 13:40 ✖ 4 issues
NEEDS ATTENTION ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
✖ issue fbsd16:zroot no snapshot job; no copy job
✖ issue fbsd16:zroot/ho… no snapshot job; no copy job
✖ issue fbsd16:zroot/ho… no snapshot job; no copy job
✖ issue protection and 122 more not protected (65 of your data)
HOSTS ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Host State Pools Capacity Memory ARC CPU Load Scrub Errors
local ● ok 3 ━━━━╌╌╌╌╌╌ 44% ━━╌╌╌╌╌╌╌╌ 16% 100.0% ? 2.65 15 d ago 0
fbsd16 ● ok 1 ━━━━━━╌╌╌╌ 61% ━━━╌╌╌╌╌╌╌ 27% 99.9% ? 0.38 6 d ago 0
fbsd16t1 ● ok 2 ━━━━━╌╌╌╌╌ 53% ━━━╌╌╌╌╌╌╌ 25% 99.9% ? 0.22 6 d ago 0
fbsd16t2 ● ok 2 ━━━━━━━━╌╌ 79% ━━╌╌╌╌╌╌╌╌ 24% 99.9% ? 0.53 6 d ago 0
DAEMON AND JOBS ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
● daemon running (pid 13609), heartbeat 1s ago
● jobs scrub 2/2 ok snapshot 3/3 ok
CLOUD ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Provider Remote Jobs Last run Next run Traffic In bucket
○ Backblaze B2 b2 no jobs - - - -
○ SFTP t1 no jobs - - - -
○ Amazon S3 (etc.) zfsctl-aws no jobs - - - -
ALERTS ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
● monitor on · report 2026-10-24
what it does
- Pools, vdevs, datasets, properties, quotas, snapshots, disks and SMART, NFS and SMB shares, boot environments.
- Scheduled jobs: snapshots with retention, host-to-host and stream-file replication (raw sends for encrypted datasets), restic backups, rclone cloud mirrors, with a guide to setting up Backblaze B2, S3, Google Drive, OneDrive, Dropbox and more.
- Native encryption: create encrypted datasets, load, unload and change keys. Passphrases never appear in an argument, a log or a file.
- Alerts and a daily report by mail or hook, and a Dashboard that shows what needs attention first.
- A protection check: every dataset needs snapshots and a copy on another machine, or it is flagged on the Dashboard and by mail, with the form that fixes it one keystroke away.
- Every change asks twice (
y, thenEnter); what cannot be undone makes you type the name. - Hosts are FreeBSD machines. Root only through a sudoers file you read first (
zfsctl print-sudoers).
install
From source, on the FreeBSD hub that will run it (a Rust toolchain is the only requirement):
# get the source and build git clone https://github.com/fedor4445/zfsctl && cd zfsctl cargo build --release # install and start the daemon install -m 755 target/release/zfsctl /usr/local/bin/zfsctl install -m 555 contrib/rc.d/zfsctl /usr/local/etc/rc.d/zfsctl sysrc zfsctl_enable=YES && service zfsctl start # the screen sudo zfsctl
Use at your own risk: zfsctl is provided without warranty and runs commands that can destroy data. Keep backups and try it on a scratch pool first (safety).
The book covers configuration, the sudoers rules for remote hosts, and every screen: installing, remote hosts, recipes.
built on
zfsctl drives other people's work and bundles none of it: OpenZFS, FreeBSD, Rust, ratatui, restic and rclone. With thanks to all their authors.