Modern ZFS Snapshots

A well-architected snapshot management tool for Linux. Beautiful TUI, Wayland-native GUI, and powerful CLI.

retrograde
$ retrograde list
NAME USED REFER CREATED
──────────────────────────────────────────────────────────────────────
rpool/ROOT@retrograde-daily-2024-11-28 128K 2.1G 2024-11-28 00:00
rpool/ROOT@retrograde-hourly-2024-11-28 64K 2.1G 2024-11-28 14:00
rpool/home@retrograde-daily-2024-11-28 512K 45.2G 2024-11-28 00:00

$ retrograde create rpool/home
Created snapshot: rpool/home@retrograde-manual-2024-11-28_153042

$ retrograde tui

Why Retrograde?

Built for modern Linux systems with ZFS

📷

Smart Scheduling

Automatic hourly, daily, weekly, and monthly snapshots with configurable retention policies.

🖥

Beautiful TUI

Navigate snapshots with vim-style keybindings. Create, delete, restore, and diff with ease.

💻

Wayland-Native GUI

Modern graphical interface built with iced. Perfect for Hyprland, Sway, and other Wayland compositors.

🚀

Fast & Safe

Written in Rust with no unsafe code. Shells out to ZFS tools for maximum compatibility.

🛠

Systemd Integration

Run as a daemon with the included systemd service. Hooks for pre/post snapshot scripts.

📊

Diff Viewer

See exactly what changed since any snapshot with color-coded file diffs.

Installation

Get up and running in minutes

1 Clone the repository

git clone https://github.com/peteonrails/retrograde.git cd retrograde

2 Build with Cargo

# TUI only (default) cargo build --release # With GUI support cargo build --release --features gui

3 Install the binary

sudo cp target/release/retrograde /usr/local/bin/ # Optional: Install GUI binary sudo cp target/release/retrograde-gui /usr/local/bin/

4 Configure (optional)

sudo mkdir -p /etc/retrograde sudo cp assets/config.toml.example /etc/retrograde/config.toml sudo vim /etc/retrograde/config.toml

5 Enable the daemon (optional)

sudo cp assets/retrograde.service /etc/systemd/system/ sudo systemctl enable --now retrograde

Multiple Interfaces

Use what works best for you

┌─────────────────────────────────── Retrograde ───────────────────────────────────┐ [1] Snapshots │ [2] Datasets ├───────────────────────────────────────────────────────────────────────────────────┤ Snapshots (rpool/ROOT) - 4 total ─────────────────────────────────────────────────────────────────────────────────── Name Dataset Created Size retrograde-daily-2024-11-28 rpool/ROOT 2h ago 128K retrograde-hourly-2024-11-28 rpool/ROOT 14h ago 64K retrograde-weekly-2024-11-24 rpool/ROOT 4d ago 256K retrograde-monthly-2024-11-01 rpool/ROOT 27d ago 512K ├───────────────────────────────────────────────────────────────────────────────────┤ [c] create [d] delete [r] restore [D] diff [R] refresh [?] help [q] quit └───────────────────────────────────────────────────────────────────────────────────┘ Loaded 4 datasets, 12 snapshots