Peatükk 8 · 8.1
Varukoopiad restic abil teise asukohta
WebOké igapäevane varukoopia (vt WebOké varukoopiate taastamine) taastab alati kogu sinu VPS-i ja asub sama teenusepakkuja juures. Lisaks saad restic abil teha oma varukoopia: krüpteeritud, teises asukohas ja sellest saad taastada ka üksikuid faile.
Mida sul vaja on?
- Asukohta väljaspool sinu VPS-i, kuhu pääsed SFTP kaudu, näiteks salvestusteenust või teist serverit. Näidetes on selleks
backup.example.netkasutajagabackup. - Tugevat parooli varukoopia jaoks. Kui see kaob, on sinu varukoopia kasutu. Hoia seda ka väljaspool serverit, oma paroolihalduris.
Paigaldamine ja ettevalmistus
Varundus töötab root-kasutajana, et see saaks kõike lugeda.
anna@web1:~$ sudo apt install restic
anna@web1:~$ sudo -i
root@web1:~# ssh-keygen -t ed25519 -C "restic web1" -N "" -f /root/.ssh/id_backup
root@web1:~# ssh-copy-id -i /root/.ssh/id_backup.pub backup@backup.example.net
root@web1:~# install -m 600 /dev/null /root/.restic-wachtwoord
root@web1:~# nano /root/.restic-wachtwoord
Määra failis /root/.ssh/config, et root kasutab varundusserveri jaoks seda võtit:
Host backup.example.net
User backup
IdentityFile /root/.ssh/id_backup
Seejärel loo repositoorium (koht, kus restic kõike hoiab):
root@web1:~# export RESTIC_REPOSITORY=sftp:backup@backup.example.net:/restic/web1
root@web1:~# export RESTIC_PASSWORD_FILE=/root/.restic-wachtwoord
root@web1:~# restic init
created restic repository 3c9a1e5b2d at sftp:backup@backup.example.net:/restic/web1
Varundusskript
Pane see faili /usr/local/sbin/backup.sh ja tee see käivitatavaks käsuga chmod 700 /usr/local/sbin/backup.sh:
#!/bin/sh
export RESTIC_REPOSITORY=sftp:backup@backup.example.net:/restic/web1
export RESTIC_PASSWORD_FILE=/root/.restic-wachtwoord
# 1. Databases dumpen (zie 8.2)
/usr/local/sbin/voor-backup.sh || exit 1
# 2. Apps met SQLite even stilzetten, back-up maken, weer starten
cd /srv/diensten
docker compose stop vaultwarden uptime-kuma n8n
restic backup /etc /home /root /srv /var/backups/db /var/lib/docker/volumes --exclude /var/lib/docker/volumes/diensten_wp-db
RESULTAAT=$?
docker compose start vaultwarden uptime-kuma n8n
[ "$RESULTAAT" -eq 0 ] || exit 1
# 3. Oude back-ups opruimen
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune || exit 1
Märgi kohtades stop ja start ainult need rakendused, mis sul tegelikult olemas on. Miks need korraks peatama peab, loed artiklist Andmebaaside ja Dockeri köidete õige varundamine. Sealt leiad ka selle, mis on failis voor-backup.sh. Rakendused käivituvad alati uuesti, ka siis, kui varundamine ebaõnnestub. Käskudega forget ja --prune hoiad alles 7 igapäevast, 4 iganädalast ja 6 igakuist varukoopiat; ülejäänud kustutatakse.
Igal ööl automaatselt
Loo fail /etc/systemd/system/backup.service:
[Unit]
Description=restic back-up
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/backup.sh
ja fail /etc/systemd/system/backup.timer:
[Unit]
Description=restic back-up elke nacht
[Timer]
OnCalendar=*-*-* 03:15
Persistent=true
[Install]
WantedBy=timers.target
root@web1:~# systemctl daemon-reload
root@web1:~# systemctl enable --now backup.timer
root@web1:~# systemctl start backup.service
root@web1:~# journalctl -u backup.service -e
Kontrollimine ja taastamine
root@web1:~# restic snapshots
root@web1:~# restic check
root@web1:~# restic restore latest --target /tmp/terug --include /srv/diensten/vw-data
Taasta eraldi kausta, näiteks /tmp/terug, ja kopeeri seejärel vajalik. Harjuta seda kord kvartalis: varukoopia, mida sa pole kunagi taastanud, on lootus, mitte varukoopia.
Vihje: Lase end hoiatada, kui varundamine ei käivitu. Loo Uptime Kumas Push-monitor (vt Uptime Kuma: saitide ja serveri jälgimine) ja lisa faili backup.sh lõppu need kaks rida. Kui märguanne jääb tulemata, saad teate.
sleep 30
curl -fsS -m 10 "https://status.example.com/api/push/JOUWCODE?status=up&msg=OK" >/dev/null