All projects
In progress

Layered Backup Strategy

File-level, VM-level, and network-config backups, each tool doing the job it's best at.

Stack
Bacula 9.6RANCIDGitnginxfcgiwrapProxmox vzdumpNFS
Hardware
  • Synology DS925+

Part of FSJ-LAB.

Goal

No single backup tool covers everything well. I wanted three layers: whole-VM snapshots for fast rollback, file-level backups for granular restores, and version-controlled network configs so I can see exactly what changed and when.

What I built

  • VM snapshots. Proxmox vzdump backs up every VM weekly to an NFS share on the Synology NAS.
  • File-level backups. A Bacula director, storage daemon, and clients on a dedicated backup VM. Four VMs are enrolled, each with a FileSet tailored to its role, plus a standard include pattern so new clients drop in cleanly and a dedicated restore path.
  • Network config versioning. RANCID pulls configs from the switches and the FortiGate every 30 minutes. I migrated it from CVS to Git, then served the repo over HTTP with nginx and fcgiwrap so LibreNMS can show config history next to each device.

What I learned

  • Check what a backup actually contains. Two VMs had backups far smaller than their data disks, which meant those disks were either nearly empty or excluded. A backup you haven’t inspected is an assumption.
  • Git is a great backend for anything that’s text and changes over time, including network configs.
  • A restore path planned in advance is part of the backup, not an extra.

Next steps

  • Automated backup verification through n8n
  • Confirm coverage of large data disks before relying on snapshots for HA migration