Self-hosting 230 GB of family photos on a decade-old box means one question keeps you up at night: what happens when a disk dies? After a kernel panic scare that turned out to be just a SATA cable, I stopped hoping and built a backup system I could actually trust — automated every-second-day backups of the Ente Photos stack with 14 days of retention, using rsync hardlink snapshots so point-in-time states cost almost no extra storage.
The interesting part is verification. A backup you've never restored is just a hope, but test-restoring 230 GB means copying 230 GB around and touching prod. The trick: mount the backup read-only as an overlayfs lower dir and run MinIO against the merged view — it can read, write, and delete freely while every change lands on a throwaway upper layer. Full restore-fidelity test, zero bytes copied, original backup untouched.
The post also covers the one-command disaster recovery script, systemd timers with Persistent=true for catchup runs, the uptime hardening that makes unattended reboots survivable (CMOS battery, power-loss behaviour, UUID-based fstab), and why I chose this over RAID 1. Scripts are public on GitHub for anyone self-hosting Ente.
