8 skyrius · 8.1
Atsarginės kopijos su restic kitoje vietoje
Kasdienė WebOké atsarginė kopija (žr. WebOké atsarginių kopijų atkūrimas) visada atkuria visą Jūsų VPS ir saugoma pas tą patį paslaugų teikėją. Su restic galite papildomai sukurti savo atsarginę kopiją: šifruotą, kitoje vietoje, ir iš jos atkurti atskirus failus.
Ko Jums reikia?
- Vietos už Jūsų VPS ribų, prie kurios galite prisijungti per SFTP, pavyzdžiui, saugojimo paslaugos arba antro serverio. Pavyzdžiuose tai yra
backup.example.netsu naudotojubackup. - Stipraus atsarginės kopijos slaptažodžio. Jei jį pamesite, atsarginės kopijos nebus galima naudoti. Saugokite jį ir už serverio ribų, savo slaptažodžių tvarkyklėje.
Įdiegimas ir paruošimas
Atsarginė kopija vykdoma kaip root, kad galėtų perskaityti viską.
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
Faile /root/.ssh/config nurodykite, kad root šį raktą naudotų atsarginių kopijų serveriui:
Host backup.example.net
User backup
IdentityFile /root/.ssh/id_backup
Tada sukurkite saugyklą (repository, vietą, kurioje restic saugo viską):
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
Atsarginės kopijos scenarijus
Įrašykite tai į /usr/local/sbin/backup.sh ir padarykite vykdomu su 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
Ties stop ir start nurodykite tik tas programas, kurias iš tikrųjų turite; kodėl jas reikia trumpam sustabdyti, aprašyta Kaip tinkamai sukurti duomenų bazių ir Docker tomų atsargines kopijas. Ten taip pat sužinosite, kas yra voor-backup.sh. Programos visada paleidžiamos iš naujo, net jei atsarginė kopija nepavyksta. Su forget ir --prune išsaugote 7 dienos, 4 savaitės ir 6 mėnesio atsargines kopijas; likusios pašalinamos.
Automatiškai kiekvieną naktį
Sukurkite /etc/systemd/system/backup.service:
[Unit]
Description=restic back-up
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/backup.sh
ir /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
Tikrinimas ir atkūrimas
root@web1:~# restic snapshots
root@web1:~# restic check
root@web1:~# restic restore latest --target /tmp/terug --include /srv/diensten/vw-data
Atkurkite į atskirą aplanką, pavyzdžiui, /tmp/terug, ir tada nukopijuokite tai, ko Jums reikia. Praktikuokitės tai daryti kartą per ketvirtį: atsarginė kopija, kurios niekada neatkūrėte, yra tik viltis, o ne atsarginė kopija.
Patarimas: Leiskite sistemai Jus įspėti, jei atsarginė kopija nebuvo sukurta. Uptime Kuma sukurkite Push stebėjimą (žr. Uptime Kuma: Jūsų svetainių ir serverio stebėjimas) ir failo backup.sh apačioje įrašykite šias dvi eilutes. Jei signalas negaunamas, gausite pranešimą.
sleep 30
curl -fsS -m 10 "https://status.example.com/api/push/JOUWCODE?status=up&msg=OK" >/dev/null