Open Source Alternatives
  • Alternatives
  • Categories
    Categories by size939 projects
    • Developer Tools486
    • AI & Machine Learning420
    • Business & Productivity205
    • Web Development199
    • Security & Monitoring140
    • Communication & Collaboration129
    • IT Management128
    • Cloud & Hosting111
    • Data & Analytics108
    • Design & Creative106
    Browse all 21 categoriesLLMOps & AI Tooling, Product & Project Management and 9 more
  • Blog
  • Advertise
SearchNotion, Slack, password manager.../
Submit
Open Source Alternatives
  • Alternatives
    • Developer Tools486
    • AI & Machine Learning420
    • Business & Productivity205
    • Web Development199
    • Security & Monitoring140
    • Communication & Collaboration129
    • Browse all 21 categories
  • Blog
  • Advertise
Submit your project

New open source projects by email

The projects we add and every new guide. Free, unsubscribe any time.

Open Source Alternatives LogoOpen Source Alternatives

Handpicked Open Source Alternatives to Paid Softwares

Product

  • Categories
  • Tag
  • Advertise

Resources

  • Blog
  • Collection
  • Submit

Company

  • Privacy Policy
  • Terms of Service
  • Refund Policy
  • Sitemap

Alternatives

  • Claude Code
  • Jira
  • Notion
  • Slack
  • Linear
  • Wispr Flow
  • All alternatives
© 2026 Open Source Alternatives. All rights reserved.
Open SourceAlternatives
Home/Categories/Developer Tools/Lazyrsync
icon of Lazyrsync

Lazyrsync

  • 968 stars
  • MIT
  • Active this week
  • Last commit 5 days ago

Last verified Oct 28, 2026

Sync files and folders via rsync from a terminal UI with reusable profiles, dry-run diff preview, live progress bars, and SSH support.

Visit websiteGitHub968 stars
image of Lazyrsync
TL;DR

Lazyrsync is a terminal UI for rsync, written in Rust, that adds reusable profiles, a dry-run diff preview, and live progress to file and folder syncs. It replaces raw rsync commands and paid GUI backup tools like Arq Backup, with a single-command install via Homebrew or Cargo and MIT licensing. Headless mode via `lazyrsync run` makes every profile you build in the TUI usable in cron and systemd scheduling. Best for developers and sysadmins who want rsync's power without memorizing flags or writing wrapper shell scripts.

Read the full breakdownHide the full breakdownWho it is for, how it works, trade-offs, the quick start and the FAQ
who it's for

Who Lazyrsync is for#

Developers backing up project files to a NAS or remote server

Define a task once with source directory, remote destination, and the `snapshot` action. Each nightly systemd run writes a hardlinked backup without duplicating unchanged files, and the TUI lets you preview what the next run will change before it happens.

Skip if:

If your backup destination is a cloud object store like S3 or Backblaze B2 and not an rsync-capable server, lazyrsync will not help. rsync requires an rsync or SSH endpoint on the destination.

Sysadmins managing file syncs across multiple remote machines

SSH support and headless mode make it practical to manage syncs across servers from one profiles.toml. Tasks addressed by ID run in isolation, so a failing remote server does not block transfers to healthy ones.

Skip if:

If you need bidirectional sync or conflict resolution for changes happening on both sides at once, rsync and lazyrsync handle one-direction transfers only. Tools like Syncthing handle two-way sync.

Teams provisioning dev environments with Ansible or dotfiles

The profiles.toml file is hand-editable with a documented key format. Unknown keys are rejected with a named error pointing to the offending line, so provisioned configs fail loudly on typos rather than silently skipping options.

Skip if:

If your team uses shared network drives or a central storage server with its own client software, a purpose-built backup agent with central management may serve the use case better.

Developers automating recurring folder syncs with a verified setup

Test your transfer in the TUI first, preview the diff, run it once to verify, then schedule the same task headless. The headless command runs the identical config you verified, so the 2 AM cron job is not a guess.

Skip if:

If you need block-level delta sync for large datasets, a dedicated tool like Restic or Borg may be faster. rsync operates at the file level.

the problem

The problem it solves#

rsync is one of the most reliable tools for file syncs and backups, but its command-line interface punishes small mistakes. A missing trailing slash copies the folder itself rather than its contents. The --delete flag, which mirrors deletions to the destination, will remove files from the target if you add it without reviewing what the sync would change. Writing flags by hand for each run repeats the same risk every time, and shell scripts wrapping rsync grow into maintenance work of their own.

For developers and sysadmins who work over SSH, the problem compounds. Desktop GUI tools for backup and file sync cannot reach a remote server without a separate graphical session, and most run only on macOS or Windows. The standard fallback is a hand-crafted rsync command pasted into a cron job, with no preview step, no way to verify what changed last time, and no quick path to retrying a single failed task.

how Lazyrsync solves it

How it solves it#

Dry-run diff preview

Press `p` before any transfer runs to resolve the sync into a `+`/`~`/`-` structured diff. You see exactly which files will be added, changed, or removed, along with transfer stats. Nothing is written until you press `r` to confirm the run.

Reusable profiles and tasks

Save a Source and Destination as a named task inside a profile. Rerun with a single keystroke, or address it directly with `lazyrsync run backups/photos-3f2a` from a script. Profiles are stored in a hand-editable TOML file under `~/.config/lazyrsync/` and can be versioned in a dotfiles repo.

Headless mode for cron and systemd

Every profile you build in the TUI runs without it via `lazyrsync run`. The README includes a ready systemd timer example with `Persistent=true` to catch missed runs. Cron output goes to stdout on success and stderr on failure, so cron mail fires only when something needs attention.

Destructive flag gate with mandatory confirmation

Enabling the `--delete` flag requires a confirmation before any files are removed from the destination. The headless runner refuses a delete task without `--yes`, printing that nothing ran and exiting with code 1, so a cron job cannot accidentally mirror deletions without an explicit opt-in.

SSH support for remote endpoints

Put a `user@host:/path` on either side of a task, and lazyrsync passes it to rsync natively. Remote source downloads and remote destination uploads both work. Headless runs use `ssh -o BatchMode=yes`, so they fail fast on a missing key rather than hanging on a password prompt.

Snapshot mode with hardlinked versions

With `action = "snapshot"`, each run writes to a new numbered subdirectory and uses rsync's `--link-dest` to hardlink unchanged files from the previous run. Storage grows only by the delta; earlier versions remain fully browsable. The destination chain is computed at run time, so no static cron command can express it.

strengths · trade-offs

Strengths and trade-offs#

Strengths

  • MIT license with no per-machine feesThe entire tool is MIT licensed. There are no seat limits, no device counts, and no cloud accounts to configure. Running it on any number of servers costs nothing beyond the machines already running your files.
  • Built-in safety gates on destructive operationsUnlike running rsync directly, lazyrsync intercepts `--delete` and `--delete-excluded` at the flag toggle level and requires explicit confirmation. A dry-run preview is a built-in step, not an optional flag you might forget. Both protect against the data-loss mistakes that raw rsync commands make easy.
  • TUI and headless share one profile storeA transfer you verified in the TUI is the exact one `lazyrsync run` executes headless. There is no second config to maintain for automated runs. The TOML profiles file is hand-editable and compatible with Ansible provisioning and dotfiles repos.
  • Single binary with no runtime dependenciesThe binary has no runtime dependencies beyond rsync itself. `cargo install lazyrsync` produces a single self-contained binary. The TUI is built with Ratatui, an active Rust TUI framework published on crates.io.

Trade-offs

  • -Requires rsync 3.1 or later on the hostThe dry-run preview needs rsync's `--itemize-changes` flag, and the live progress bar needs `--info=progress2`, both added in rsync 3.1.0. On macOS 15.4 and later, the system `/usr/bin/rsync` is openrsync, which supports neither. Users on those systems must install a separate rsync via Homebrew and add it to `$PATH` or configure `rsync_path` in `settings.toml`.
  • -Terminal-only, no desktop GUILazyrsync runs in a terminal. There is no web interface, no Electron app, and no graphical file browser for picking sources and destinations. Users who want point-and-click transfers are better served by dedicated GUI tools. The design is intentional (terminal-native and SSH-capable), but it requires a terminal environment.
  • -Delete gating does not parse raw_argsThe flag confirmation gate reads the task's explicit `delete` and `delete_excluded` toggles. A `--delete` written by hand in the Advanced `raw_args` field bypasses the gate entirely. This is documented in the README as a known caveat but could affect users who prefer to hand-write rsync flags.
versus alternatives

Lazyrsync vs alternatives#

Lazyrsync vs Arq Backup

Both tools handle automated file backups, but they target different destinations. Arq Backup is a commercial GUI application with cloud storage support; lazyrsync wraps rsync and works with rsync-capable or SSH-accessible endpoints, including local paths and NAS devices.

FeatureLazyrsyncArq Backup
LicenseMITProprietary
InterfaceTerminal UIDesktop GUI
Destination supportrsync/SSH endpoints, local pathsCloud storage + local
Headless automationYes (lazyrsync run)Schedule-based
PlatformmacOS, LinuxmacOS, Windows

Lazyrsync is the better choice when your destination is a server, NAS, or another machine accessible via SSH and you want a diff preview before each run. Arq Backup is worth considering when you need cloud destinations like S3 or Backblaze B2, or when you prefer a graphical setup wizard without terminal access.

Lazyrsync vs Transmit

Transmit is a commercial macOS file-transfer GUI that supports SFTP, FTP, S3, and WebDAV. Lazyrsync focuses on rsync over local paths and SSH and runs on both macOS and Linux.

FeatureLazyrsyncTransmit
LicenseMITProprietary
PlatformmacOS, LinuxmacOS only
Protocolrsync/SSHSFTP, FTP, S3, WebDAV
Headless automationYesLimited
Dry-run previewYesNo

Lazyrsync is the better pick for automated rsync-based syncs on Linux servers or anywhere you work over SSH. Transmit makes sense when you need S3, WebDAV, or other non-rsync protocols, or when a graphical drag-and-drop interface is the priority.

install · quick start

Quick start#

bash
Install lazyrsync via Cargo, Homebrew (macOS/Linux), or the AUR; rsync 3.1 or later must be on your PATH first.
```bash
cargo install lazyrsync
brew install lazyrsync
yay -S lazyrsync
```
tech stack · detected from GitHub

What it's built on#

Languages
Rust
frequently asked

FAQ#

Does lazyrsync replace rsync or wrap it?

Lazyrsync wraps rsync; it does not replace it. It constructs and executes the rsync command based on your profile's task settings. rsync 3.1 or later must already be installed on the system and available on your $PATH. The TUI and headless runner both call the same underlying binary.

Can I schedule lazyrsync runs automatically?

lazyrsync run <profile> runs every task in a profile without the TUI. The README includes crontab and systemd timer examples. For systemd, Persistent=true ensures runs missed while the machine was off execute at the next startup. Cron output goes to stdout on success and stderr on failure, so cron mail fires only on errors.

Does lazyrsync work over SSH?

Yes. Use a user@host:/path address on either side of a task's source or destination. Remote source downloads and remote destination uploads both work. Headless runs require passwordless SSH keys because the runner uses ssh -o BatchMode=yes and cannot prompt for a passphrase.

What does the --delete gate protect against?

When you enable the --delete toggle on a task, lazyrsync shows a confirmation prompt before any run that would delete files from the destination. The headless runner exits with code 1 and reports that nothing ran unless you pass --yes explicitly. This prevents accidental deletions when the flag is on but you forgot to opt into it for a given run.

What license does lazyrsync use?

Lazyrsync is MIT licensed. You can run it commercially, modify it, fork it, and distribute it without restriction. There is no community edition vs. enterprise edition split; the full tool is a single MIT-licensed binary.

also worth a look

Similar open-source tools#

Arrmada

Alternative toPlex

Movies, TV, books and requests in one app, arr stack included

  • 412 GitHub stars
  • MITLicence MIT

Keda

Alternative toKedify

Event-driven Kubernetes autoscaling with 70+ scalers and scale to zero

  • 10,674 GitHub stars
  • Apache-2.0Licence Apache-2.0

Duckle

Alternative toFivetran

Self-hosted ETL on DuckDB with 385 connectors and no per-row billing.

  • 1,530 GitHub stars
  • Apache-2.0Licence Apache-2.0

Zeroshot

InDeveloper Tools

Enforced QA workflow engine for coding agents, MIT licensed

  • 2,050 GitHub stars
  • MITLicence MIT

Dolt

Alternative toPlanetScale

Git-native SQL database with branching, merging, and row-level diffs.

  • 24,755 GitHub stars
  • Apache-2.0Licence Apache-2.0

Container

Alternative toDocker Desktop

Linux containers as lightweight VMs, native to Apple silicon

  • 50,892 GitHub stars
  • Apache-2.0Licence Apache-2.0
by category

Open source tools in these categories#

487

Developer Tools

REA (Reverse Engineer Anything), superpowers, Skills for Real Engineers
93

DevOps & CI/CD

Nvm, Uptime Kuma, Netdata
64

Databases & Storage

Immich, Supabase, Redis

Sponsors

Inbox Zero

Alternative toSuperhuman

AI email assistant that drafts replies and clears your inbox

  • 12,826 GitHub stars
  • AGPL-3.0Licence AGPL-3.0
  • #Email

Omnara

Alternative toCClaude Managed Agents

Open-source agent deployment API. Self-host or use Omnara Cloud.

  • 3,296 GitHub stars
  • Apache-2.0Licence Apache-2.0
  • #AI Agents

rakazo

Alternative toGrok Bot

AI teammates you own: your keys, your model, your machine.

  • 5,914 GitHub stars
  • Apache-2.0Licence Apache-2.0
  • #AI Agents
Advertise your product

New open source projects by email

The projects we add and every new guide. Free, unsubscribe any time.

Find open source alternatives to paid software

/
  • Claude Code to OpenCode
  • Jira to Windshift
  • Notion to AppFlowy
  • Slack to Mattermost
  • Linear to GitLab
  • Wispr Flow to Handy
  • Arc to Zen Browser
  • CapCut to Concat
  • Grok Bot to rakazo
  • Superhuman to Inbox Zero
  • Airtable to AITable
  • Muse to OpenClaw
  • Railway to Coolify
  • GitHub Copilot to Cline
  • Datadog to Netdata
  • Microsoft Teams to Rocket.Chat
  • Confluence to Docmost
  • Pinecone to Qdrant
  • Zapier to n8n
  • Devin AI to OpenHands
  • Firebase to Supabase
  • 1Password to KeePassXC
  • Contentful to Strapi
  • Adobe Premiere Pro to Shotcut
  • Claude Code to OpenCode
  • Jira to Windshift
  • Notion to AppFlowy
  • Slack to Mattermost
  • Linear to GitLab
  • Wispr Flow to Handy
  • Arc to Zen Browser
  • CapCut to Concat
  • Grok Bot to rakazo
  • Superhuman to Inbox Zero
  • Airtable to AITable
  • Muse to OpenClaw
  • Railway to Coolify
  • GitHub Copilot to Cline
  • Datadog to Netdata
  • Microsoft Teams to Rocket.Chat
  • Confluence to Docmost
  • Pinecone to Qdrant
  • Zapier to n8n
  • Devin AI to OpenHands
  • Firebase to Supabase
  • 1Password to KeePassXC
  • Contentful to Strapi
  • Adobe Premiere Pro to Shotcut