Backup

Kopia is the chosen backup tool for this setup.

The backup shape now assumes two things are available: Google Drive for offsite storage and an NFS path for a fast local mirror. Kopia fits that combination better than ad hoc file copying because the repository is encrypted, verifiable, and portable.

Chosen stack: kopia + kopiaui. The repo keeps both so the CLI and GUI paths are available on the next rebuild.

Chosen Backup Shape

This layout uses both of your storage backends instead of picking only one.

  1. Create the encrypted Kopia repository in a dedicated Google Drive folder so offsite backup exists even when the NFS share is unavailable.
  2. Use Kopia repository synchronization to mirror that repository to the NFS path when the share is mounted.
  3. Keep the live backup repository separate from Git version history. Use Git only for file-based config and export snapshots.
  4. Run repository verification regularly so the backup is checked, not just assumed.

Useful Commands

These are the two commands worth remembering. Initial repository creation can be done in KopiaUI if that is faster.

Create Google Drive repo

Use a dedicated Google Drive folder and keep the credentials file outside git.

kopia repository create gdrive --folder-id=<google-drive-folder-id> --credentials-file=<service-account-json>

Sync to NFS mirror

The --must-exist flag prevents accidentally writing into an unmounted path.

kopia repository sync-to filesystem --path /Volumes/backups/kopia --must-exist --delete --no-progress

What To Protect

These are the paths that matter more than generic app binaries, because Homebrew can reinstall apps but it cannot recreate state.

Automation

~/Library/Application Support/Keyboard Maestro, exported macro folders, and any text expander source files.

Knowledge

Obsidian vaults, Logseq graphs, plugin settings, and any repo-backed knowledge projects.

Mail and identity

MailMate settings, dotfiles, SSH material, repo clones, and the small app preference directories that would be annoying to rebuild.

Exclude the noise

Skip caches, node_modules, derived build output, downloaded dependencies, and media you can already re-fetch.

Keyboard Maestro And GitHub

GitHub is useful here, but not as a live sync replacement.

Keep live sync simple

Continue using Google Drive for live Keyboard Maestro sync if it is already stable. That is the low-risk path.

Use git for snapshots

Export all macros as a folder and store those exports in a private Git repo for version history and rollback.

Do the same for Logseq

Logseq file graphs are a good fit for a private Git repo, which also gives you change history across notes and config.