Iedereen heeft back-ups tot hij er een probeert terug te zetten. De map blijkt leeg, de cronjob is in maart gestorven, of het archief staat op dezelfde schijf die net is uitgevallen. restic lost het meeste daarvan op: het versleutelt aan jouw kant, slaat elk stuk data één keer op en maakt het terugzetten van één bestand net zo makkelijk als het back-uppen van de hele server.
Dit is een opzet die wij echt zouden vertrouwen, op Ubuntu of Debian.
1. Installeer restic
apt update && apt install -y restic
restic self-update
Distributiepakketten lopen achter; self-update haalt de actuele release op.
2. Kies een plek voor de repository
De repository mag niet op de server staan die je beschermt. Twee gangbare keuzes:
- Een andere server via SFTP:
sftp:backup@203.0.113.20:/srv/restic/web1 - S3-compatibele objectopslag:
s3:https://s3.example.com/my-bucket/web1
3. Sla de inloggegevens op
Houd alles in één bestand dat alleen root kan lezen, zodat de timer en je shell dezelfde instellingen gebruiken:
cat > /root/.restic-env <<'EOF'
export RESTIC_REPOSITORY="s3:https://s3.example.com/my-bucket/web1"
export RESTIC_PASSWORD_FILE="/root/.restic-pass"
export AWS_ACCESS_KEY_ID="your-key-id"
export AWS_SECRET_ACCESS_KEY="your-secret"
EOF
openssl rand -base64 32 > /root/.restic-pass
chmod 600 /root/.restic-env /root/.restic-pass
Kopieer nu de inhoud van /root/.restic-pass naar je wachtwoordmanager. Zonder dat wachtwoord kunnen de back-ups niet worden ontsleuteld — niet door jou en door niemand anders.
4. Initialiseer en maak de eerste back-up
source /root/.restic-env
restic init
restic backup /etc /home /root /srv /var/www \
--exclude-caches --exclude '/root/.cache'
restic snapshots
Pas de paden aan naar waar je data echt staat. Docker-volumes staan onder /var/lib/docker/volumes; applicatiedata vaak in /srv of /opt.
5. Databases: eerst dumpen, dan back-uppen
Back-up niet de ruwe bestanden van een draaiende database. Maak vlak voor de back-up een dump:
mkdir -p /var/backups/db
sudo -u postgres pg_dump -Fc mydb > /var/backups/db/mydb.dump
Voeg /var/backups/db toe aan de back-uppaden. Onze PostgreSQL-handleiding gaat dieper in op dumps.
6. Plan het met systemd
Een timer is hier beter dan cron: hij logt naar het journal en haalt een gemiste run in als de server op dat moment uit stond.
# /etc/systemd/system/restic-backup.service
[Unit]
Description=restic backup
[Service]
Type=oneshot
ExecStart=/bin/bash -c 'source /root/.restic-env && restic backup /etc /home /root /srv /var/www /var/backups/db --exclude-caches && restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune'
# /etc/systemd/system/restic-backup.timer
[Unit]
Description=Daily restic backup
[Timer]
OnCalendar=*-*-* 03:30:00
Persistent=true
[Install]
WantedBy=timers.target
systemctl daemon-reload
systemctl enable --now restic-backup.timer
systemctl list-timers restic-backup.timer
forget --prune bewaart 7 dagelijkse, 4 wekelijkse en 6 maandelijkse snapshots en verwijdert de rest. Heb je een stap voor een databasedump, zet die dan in een regel ExecStartPre=.
7. Zet echt iets terug
Dit is de stap die "we hebben back-ups" tot een feit maakt. Haal één map terug naar een tijdelijke map en bekijk hem:
source /root/.restic-env
restic restore latest --target /tmp/restore-test --include /etc/nginx
ls -la /tmp/restore-test/etc/nginx
restic check
Doe dit nu één keer en daarna om de paar maanden. restic check controleert de structuur van de repository; het terugzetten bewijst dat de data er echt is.
restic en Managed Backups
Ze concurreren niet. Managed Backups maken dagelijks een herstelpunt van de hele server dat je vanuit het paneel terugzet — de snelle oplossing na een mislukte upgrade. Ze kosten $2 per maand en zitten gratis bij elk jaarplan. restic geeft je externe kopieën op bestandsniveau in opslag die jij beheert, en dat telt als het probleem een bestand is dat vorige dinsdag is verwijderd, of als je een kopie volledig buiten onze infrastructuur wilt.
Bewaar je gevoelige data, combineer dit dan met volledige schijfversleuteling, of bekijk de toepassing versleutelde opslag om je eigen back-upbestemming te draaien. Een Micro-plan is genoeg voor de meeste kleine servers plus hun back-uptaken.
Reacties
Nog geen reacties. Wees de eerste.