The wedge
Pick LazyBackup when you want UI + schedules + restore for the same class of work you already do with SSH and dump scripts.
SSH control plane
Reuse servers as From or To. Path transfers need a key; password auth still works for test/list helpers.
Docker volumes + DB dumps
Named-volume alpine packs (source server or this host’s Docker socket) and logical dumps. Restore from History—local, S3, Bro, or SSH dest with a key; retarget onto a different host.
Database sources
Postgres / MySQL / MariaDB / SQLite via native client or docker exec—not “rsync the data directory.”
Server → Server
Ephemeral SSH for direct rsync when reachable; otherwise pull then push via the LazyBackup host.
MCP for agents
Point Cursor/Claude at /mcp with a Bearer token. validate_backup and get_status; opt-in read_only or remote_exec. Destructive tools require confirm=true.
From → To, not a repo
Endpoints and source types—not a proprietary chunk store. Destinations are paths or object prefixes.
Side by side with rsync + cron
Honest comparison. LazyBackup does not replace every shell pipeline—it packages the operator loop.
| Topic | rsync + cron | LazyBackup |
|---|---|---|
| What it is | A transfer tool + a schedule you write yourself. | A self-hosted control plane: jobs, history, retention, auth, restore UI. |
| From → To | You invent paths, wrappers, and which host initiates the push/pull. | Local, SSH server, or S3 on either side—including server→server (ephemeral SSH or host relay). |
| Docker volumes | Mount paths by hand; named volumes need extra docker run / alpine glue. | sourceType=docker_volume packs a named volume to .tar.gz on the source server or this host’s Docker socket. |
| Databases | Separate pg_dump/mysqldump scripts, credentials, and cron. | Postgres / MySQL / MariaDB → .sql.gz; SQLite → .sqlite.gz (native client or docker exec + inspect hints). |
| S3 / peers | Not built in (rclone/s3cmd is another stack). | S3-compatible profiles as source/dest; Bro Space mailbox peers (LazyBro or LB↔LB) with forced age encryption. |
| Encryption | You layer age/gpg yourself before/after transfer. | Optional age vault before land (forced for Bro); recovery recipients + export UX. |
| Agents / API | Shell only. | Streamable HTTP MCP at /mcp + Bearer API tokens (opt-in remote_exec or read_only; validate_backup and get_status). |
| When rsync wins | One-off syncs, existing battle-tested scripts, maximum DIY control. | Use LazyBackup when you want the same transfers with UI, schedules, and restore—not when you only need a single rsync line. |
Briefly: Restic, Borg, Duplicati
Different jobs. Those tools excel at deduplicated backup repositories. LazyBackup schedules and lands transfers between endpoints you already operate.
Restic / Borg
Excellent deduplicating archive tools. You push into a repository format with chunking, pruning, and (usually) repo passwords. LazyBackup is not competing on dedup: it lands path trees, .tar.gz volumes, and .sql.gz dumps at a destination path or S3 prefix—optionally age-encrypted—and tracks runs in History.
Duplicati
Desktop/server backup with many cloud backends and a full backup-set model. LazyBackup stays operator-focused on SSH boxes and container hosts: From→To endpoints, volume pack, DB dump, server→server relay, Status posture, and MCP—without replacing a general-purpose backup suite.
Many operators run both: Restic/Borg for laptop or whole-disk archives, LazyBackup for VPS path pulls, volume packs, and DB dumps into a known folder or S3 prefix.
Ready to try the control plane?
Deploy with Docker, add an SSH server, and create a From→To job. Optional age vault, Status posture, and MCP when you want them.