From ba00820aea80adb16e10fbd9171cc62665cf3df1 Mon Sep 17 00:00:00 2001 From: Sam Rolfe Date: Wed, 20 May 2026 08:55:20 +1000 Subject: [PATCH] sam-4screen-desktop 2026-5-20:8:55:20 --- .obsidian/workspace.json | 1 + .../Backup System — Borg, Kopia & Restic.md | 82 +++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 100 inbox/Backup System — Borg, Kopia & Restic.md diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index c5d11da..a6d102c 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -226,6 +226,7 @@ }, "active": "c6fd063107736636", "lastOpenFiles": [ + "100 inbox/Backup System — Borg, Kopia & Restic.md", "300 areas/350 AI/Pi Agent Extensions & Skills.md", "100 inbox/Untitled.md", "100 inbox/1778533395-ZAPX.md", diff --git a/100 inbox/Backup System — Borg, Kopia & Restic.md b/100 inbox/Backup System — Borg, Kopia & Restic.md new file mode 100644 index 0000000..fe9f987 --- /dev/null +++ b/100 inbox/Backup System — Borg, Kopia & Restic.md @@ -0,0 +1,82 @@ +--- +created: 2026-05-20 09:30 +modified: 2026-05-20 09:30 +type: note +tags: [dev-ops, network, backup, system-config] +aliases: [borg-backups] +--- +# [[Backup System — Borg, Kopia & Restic]] + +## Overview + +Three-machine backup with dual-copy (local + network) covering all critical data. + +| Machine | Tool | Target | Schedule | +|---------|------|--------|----------| +| **.27** — sam-4screen-desktop | Borg (SSH) | `.13:/mnt/ubuntu_storage_3TB/backup/borg/.27` | Daily (after boot) | +| **.13** — nixos-desktop | Borg (local) | `/mnt/ubuntu_storage_3TB/backup/borg/.13` + rsync→.35/.23 | Daily 04:00 / 05:00 | +| **.35** — sam-ubuntu1 | Kopia + Backrest | `.23` NFS (`usb_3tb`) | Weekly Sun 22:00 | + +--- + +## .27 — sam-4screen-desktop + +**Source**: `/home/sam/` (excl: `.cache`, `.npm`, `node_modules`, `.venv`, `target`, `.cargo`, etc.) +**Target**: `sam@192.168.20.13:/mnt/ubuntu_storage_3TB/backup/borg/.27` via SSH (key: `~/.ssh/id_ed25519`) +**Schedule**: systemd timer — `OnCalendar=daily` (fires midnight, catches up after boot via Persistent) +**Prune**: 7 daily, 4 weekly, 3 monthly +**Passphrase**: `/home/sam/.borg-passphrase` +**Config**: `/etc/nixos/hosts/sam-4screen-desktop/backup.nix` +**Status**: `systemctl status borgbackup-job-home-to-13.service` +**Snapshots**: `borg list sam@192.168.20.13:/mnt/ubuntu_storage_3TB/backup/borg/.27` + +## .13 — nixos-desktop + +**Source**: Docker configs (`/home/sam/Docker/`), PocketBase (`/home/sam/pocketbase-data/`), dotfiles, `.ssh/` +**Primary**: `/mnt/ubuntu_storage_3TB/backup/borg/.13` (local ext4, 2.7T, 2.6T free) +**Secondary**: rsync → `sam@192.168.20.35:/mnt/nfs_usb_3tb/borg-repos/.13` → `.23` USB +**Schedule**: Borg daily 04:00 | rsync daily 05:00 +**Prune**: 7 daily, 4 weekly, 3 monthly +**Passphrase**: `/home/sam/.borg-passphrase` (same as .27 recommended) +**Config**: `/etc/nixos/backup.nix` +**Snapshots**: `borg list /mnt/ubuntu_storage_3TB/backup/borg/.13` + +> ⚠️ Borg runs as root — `postHook` chowns to `sam:users`. Known hosts issue: `/home/sam/.ssh/known_hosts` was a broken directory (fixed). + +## .35 — sam-ubuntu1 + +**Tools**: Kopia + Backrest (Restic) — Docker containers +**Sources**: `/Docker/Containers/`, `/docker-config`, `/docker-volumes`, `/host_fs/root/trilium-data` +**Target**: `//192.168.20.23/usb_3tb` → `/mnt/nfs_usb_3tb/` +- Kopia repo: `/mnt/nfs_usb_3tb/kopia/backups/` (46G) +- Restic repo: `/mnt/nfs_usb_3tb/backups/restic/` (11G) +**Schedule**: +- Kopia: Weekly Sun 22:00 (retention: 10 latest, 4 weekly, 12 monthly, 3 annual) +- Backrest: Weekly Sun 23:00 (prune/check daily) +**VM-level**: Proxmox Backup Server (.48) + +## .23 — file-server + +- 2.7T USB drive shared via CIFS/SMB to `.35` +- Backup repos consume ~57G, 2.5T free +- Also stores: `sam/` (personal docs/music/photos) + +## Restore Commands + +### .27 restore +```bash +export BORG_PASSPHRASE=$(cat /home/sam/.borg-passphrase) +borg extract sam@192.168.20.13:/mnt/ubuntu_storage_3TB/backup/borg/.27:: +``` + +### .13 restore +```bash +export BORG_PASSPHRASE=$(cat /home/sam/.borg-passphrase) +borg extract /mnt/ubuntu_storage_3TB/backup/borg/.13:: +``` + +## Not Covered + +- `.27`: Git-tracked NixOS config (already covered by flakes) +- `.13`: Git-tracked NixOS config, `ollama`/`open-webui` Docker volumes, old Windows drives +- `.35`: Ubuntu VM filesystem (covered by Proxmox PBS), Obsidian vault (in Docker, covered by Kopia)