mirror of
https://github.com/retspen/webvirtcloud
synced 2026-11-08 11:16:47 +00:00
The daily backups stayed on the panel's host, so losing the host lost them too. webvirt-offsite.timer now copies them at 03:45 with restic over SFTP to another server, encrypted with a password only the administrator and the host hold, and keeps 7 daily, 4 weekly and 6 monthly copies. It runs on the host as root, with Docker too, outside the panel and its image. It fails when the newest backup is older than 26 hours, so a stopped panel backup shows; an optional heartbeat URL is called after each good copy. The README has the setup, how to get a backup back from the copies, and a fix found by the drill: moving to a new machine stopped when the backup had no SSH keys (a panel without SSH computes).
15 lines
700 B
Bash
Executable file
15 lines
700 B
Bash
Executable file
#!/bin/sh
|
|
# Copies the panel's backups to an off-site restic repository; run as root by
|
|
# webvirt-offsite.service with the settings of /etc/webvirtcloud-offsite.env.
|
|
set -eu
|
|
newest=$(find "$WVC_BACKUPS" -maxdepth 1 -name 'webvirtcloud-backup-*' -mmin -1560)
|
|
if [ -z "$newest" ]; then
|
|
echo "No backup from the last 26 hours in $WVC_BACKUPS: is the panel's backup running?" >&2
|
|
exit 1
|
|
fi
|
|
# dot files are the lock and the backup being written
|
|
restic backup --tag webvirtcloud --exclude '.*' "$WVC_BACKUPS"
|
|
restic forget --tag webvirtcloud --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
|
|
if [ -n "${WVC_HEARTBEAT:-}" ]; then
|
|
curl -fsS -m 10 --retry 3 -o /dev/null "$WVC_HEARTBEAT"
|
|
fi
|