A terminal UI that renders a git commit graph as images, similar to git log --graph --all, for browsing repository history.
westpoint-io/lazyrsync
A terminal UI for rsync that manages reusable transfer profiles, previews changes as a dry-run diff, and shows live progress, including over SSH.
- Stars
- 925
- Forks
- 31
- Open issues
- 1
- Last commit
- 2 months ago
What is it?
lazyrsync wraps rsync in a keyboard-driven terminal interface. You save a source and destination pair as a task, group tasks into profiles, and rerun them with a keystroke. Destructive options such as --delete are gated behind an explicit confirmation.
Before a transfer runs, the preview shows the resolved changes as a +/~/- diff with statistics, and nothing is written. During a run, a progress bar tracks bytes and files, and the run can be cancelled mid-transfer. Either side of a task can be a remote user@host:/path, so transfers work over SSH.
The same profiles can be run headlessly with lazyrsync run, which makes them suitable for cron or systemd timers. Snapshot tasks keep numbered, hardlinked versions of a destination using --link-dest. The tool requires rsync 3.1 or later on the PATH.
Key features
- 01Saves reusable source-to-destination tasks grouped into profiles.
- 02Previews transfers as a dry-run diff with statistics before running.
- 03Shows live progress with byte and file counts, and supports cancelling a run.
- 04Supports remote paths over SSH on either side of a task.
- 05Gates --delete behind a confirmation prompt.
- 06Runs saved profiles headlessly for cron or systemd schedules.
Use cases
- Running nightly backups of local folders to a NAS or remote server.
- Previewing a destructive mirror with --delete before it touches anything.
- Maintaining hardlinked numbered snapshots of a directory over time.
- Managing rsync transfers on a remote machine over SSH from a terminal.
Quick start
- 1
Install rsync 3.1 or later on your PATH
- 2
Install lazyrsync with cargo
cargo install lazyrsync - 3
Launch the terminal UI
lazyrsync
Things to know
- Requires rsync 3.1 or later; macOS 15.4+ system rsync (openrsync) is not supported and needs a Homebrew rsync.
- cargo install and cargo binstall do not install rsync, so you must install it yourself.
Topics
FAQ
- What is lazyrsync?
- A terminal UI for rsync that manages reusable transfer profiles, previews changes as a dry-run diff, and shows live progress, including over SSH. lazyrsync wraps rsync in a keyboard-driven terminal interface. You save a source and destination pair as a task, group tasks into profiles, and rerun them with a keystroke. Destructive options such as --delete are gated behind an explicit confirmation.
- Is lazyrsync free to use? What license does it have?
- lazyrsync is open source under the MIT license. Check the license terms before using it in commercial products.
- Is lazyrsync still maintained?
- Updated within 6 months. The last commit to lazyrsync was on Aug 10, 2026.
- What can I use lazyrsync for?
- Running nightly backups of local folders to a NAS or remote server. Previewing a destructive mirror with --delete before it touches anything. Maintaining hardlinked numbered snapshots of a directory over time. Managing rsync transfers on a remote machine over SSH from a terminal.
- How do I install lazyrsync?
- Install rsync 3.1 or later on your PATH Install lazyrsync with cargo: cargo install lazyrsync Launch the terminal UI: lazyrsync
- Where can I get lazyrsync?
- The source code and installation instructions are on GitHub: https://github.com/westpoint-io/lazyrsync
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A terminal tool that replays Git commits as animated typing sessions with syntax highlighting and file tree transitions.
A terminal UI for managing Bluetooth devices on Linux, built on BlueZ.
A terminal TUI for browsing, connecting to, and managing SSH hosts defined in your ~/.ssh/config file.
A small Rust CLI that prints CSV, TSV, JSON and SQLite data as stylish, auto-laid-out tables in your terminal.
Interactive terminal tool to find processes by name, path, arguments, or port and kill them, like pkill with live fuzzy search.