Server backups for macOS

Servers fail. Your copy is already home.

CopyHome dumps your MySQL databases and archives folders over SSH, downloads them to your Mac, verifies every file and puts a copy in the cloud. Quietly, on schedule, from the menu bar.

0agents or scripts on the server: just ssh, mysqldump and tar
100%of files are verified after download by default
1 clickin the menu bar to take a backup right now
sha256checked for every file that goes to the cloud

Your whole project on one screen

Know the backup exists, don't just hope

Last run status, the next backup, disk usage and how fast your database grows. If something goes wrong, CopyHome tells you in plain words.

Schedule

Your way, no cron in your head

Manually, hourly, daily or weekly. Need more precision? Write your own cron expression. Was the Mac asleep at 3:00 AM? The missed backup runs as soon as it wakes up, and a failed one is retried after 15 and 60 minutes.

ManuallyEvery hourDaily at 3:00 AMEvery Monday15 */6 * * *

Verification

Every file is unpacked to the last byte

  • ✓mysql-shop.sql.zst-- Dump completed
  • ✓dir-uploads.tar.gztar end marker
  • ✓sizedropped less than 30%

Notifications

Speaks up only when it matters

No recent backup of "Blog"Last good copy: October 14 at 3:00 AM
"Landing pages" backup: check the sizeSnapshot is 42% smaller than the last one
CopyHomeShop: backup done, verified and uploaded

Menu bar

Runs in the background, out of your way

Close the window and the schedule keeps running. Starts when you log in.

Rotation

Keeps the last N copies

Old snapshots are removed automatically, on the Mac and in the cloud separately. And only after a successful full backup, so a server that goes down never eats your good copies.

Local too

MySQL in Docker on this Mac

An "On this computer" project dumps without SSH. CopyHome finds the MySQL client in Homebrew or MAMP by itself.

127.0.0.1:3307

Dump options

Compression and schema-only tables

CopyHome picks the fastest compressor available on the server. Logs and sessions can be saved as structure only.

How it works

Three steps to peace of mind

  1. 01

    Add a server

    Host and user, sign in with a key or a password. Your ~/.ssh/config and ssh-agent just work. "Check SSH" shows whether the server has everything needed.

  2. 02

    Pick what to keep

    MySQL databases and folders, with exclusions like cache/ or node_modules. Each source can be backed up on its own.

  3. 03

    Set a schedule

    How many copies to keep and whether to send one to the cloud. From there CopyHome does the rest and tells you if anything is off.

What happens during a backup

    

The dump streams straight into a file on your Mac and never lands on the server's disk. The MySQL login and password go through stdin, so they never show up in ps.

Cloud copy

One copy at home, one more in the cloud

The 3-2-1 rule without the chores. After every backup CopyHome uploads the snapshot to your storage and checks the checksums.

  • Files over your account's limit are split into parts without extra space on the Mac
  • Connection dropped or the Mac went to sleep? The upload resumes by itself
  • Deleted a copy from the Mac? Download it back from History
  • CopyHome only touches its own folder on the Disk
Yandex DiskSign in on Yandex's own page
Ready
Google DriveUp next
Soon
S3-compatibleYandex Object Storage, Selectel, Backblaze
Planned
WebDAVNextcloud and your own servers
Planned
Disk / CopyHome/
└─ Shop/
   └─ 2026-10-17T03-00-00/
      ├─ mysql-shop.sql.zst
      ├─ dir-uploads.tar.gz.part001
      ├─ dir-uploads.tar.gz.part002
      └─ .copyhome.json  ✓ sha256

Security

Your data stays yours

No middleman

Copies go from the server straight to your Mac. Neither our service nor anyone else's sees your data. A copy goes to the cloud only if you connect your own storage.

age encryption

Turn on encryption and the dump is encrypted on its way to the file: there is no plain copy on disk, and the cloud gets the encrypted one. A .age file opens with the standard age tool, no CopyHome needed.

macOS Keychain

MySQL and SSH passwords and cloud tokens are encrypted with a key from your Keychain. They are never stored in plain text.

System ssh

No home-made protocol code. Your keys, your config, your agent. A changed host key blocks the connection.

Invisible in ps

The database password reaches the server through stdin, not command arguments, so other users on the server can't see it.

OAuth with PKCE

You sign in to the cloud on Yandex's page. No app secret is needed or kept in the code.

FAQ

The short answers

Do I need to install anything on the server?

No. It only needs bash, gzip, tar and mysqldump, which are almost always there already. If no database password is set, CopyHome uses ~/.my.cnf on the server.

Where are backups stored on the Mac?

In ~/Backups/fast-backup/<Project>/<date-time>/ as plain .sql.gz, .sql.zst and .tar.gz files that open without CopyHome. No proprietary formats.

What if the Mac was asleep or off?

A missed scheduled backup (from the last 7 days) runs right away once the Mac wakes up or CopyHome starts. A failed scheduled backup is retried automatically after 15 and 60 minutes. And if there has been no good copy for too long, you get a "No recent backup" notification.

What if the window is closed?

CopyHome stays in the menu bar and keeps running on schedule. Turn on "Open at login" and the window won't even appear.

What about a huge database?

The dump runs with --single-transaction, so InnoDB tables aren't locked, and zstd or pigz compression uses every core on the server. Large log tables can be saved as structure only.

Is PostgreSQL supported?

Not yet. PostgreSQL is next on the roadmap, along with incremental folder backups via rsync and one-click restore.

CopyHome icon

Let your backups find their way home

An app for macOS. Your backups stay with you.