Alle har backup, indtil de prøver at gendanne en. Mappen viser sig at være tom, cronjobbet døde i marts, eller arkivet ligger på den samme disk, der lige er gået i stykker. restic løser det meste af det: det krypterer på din side, gemmer hver bid data én gang og gør det lige så nemt at gendanne en enkelt fil som at tage backup af hele serveren.
Her er en opsætning, vi faktisk ville stole på, på Ubuntu eller Debian.
1. Installér restic
apt update && apt install -y restic
restic self-update
Distributionens pakker halter bagefter; self-update henter den aktuelle udgave.
2. Vælg et sted til repositoryet
Repositoryet må ikke ligge på den server, du beskytter. To almindelige valg:
- En anden server over SFTP:
sftp:backup@203.0.113.20:/srv/restic/web1 - S3-kompatibel objektlagring:
s3:https://s3.example.com/my-bucket/web1
3. Gem loginoplysningerne
Hold alt i én fil, som kun root kan læse, så timeren og din shell bruger de samme indstillinger:
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
Kopiér nu indholdet af /root/.restic-pass over i din adgangskodeadministrator. Uden det kan backupperne ikke dekrypteres — hverken af dig eller af nogen anden.
4. Initialisér og kør den første backup
source /root/.restic-env
restic init
restic backup /etc /home /root /srv /var/www \
--exclude-caches --exclude '/root/.cache'
restic snapshots
Tilpas stierne til, hvor dine data faktisk ligger. Docker-volumes ligger under /var/lib/docker/volumes; applikationsdata ligger ofte i /srv eller /opt.
5. Databaser: dump først, backup bagefter
Tag ikke backup af de rå filer fra en kørende database. Lav et dump lige før backuppen:
mkdir -p /var/backups/db
sudo -u postgres pg_dump -Fc mydb > /var/backups/db/mydb.dump
Føj /var/backups/db til backupstierne. Vores PostgreSQL-guide har mere om dumps.
6. Planlæg det med systemd
En timer slår cron her: den logger til journalen og indhenter en kørsel, hvis serveren var slukket på tidspunktet.
# /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 beholder 7 daglige, 4 ugentlige og 6 månedlige snapshots og sletter resten. Har du et trin med databasedump, så læg det i en ExecStartPre=-linje.
7. Gendan faktisk noget
Det er dette trin, der gør "vi har backup" til en kendsgerning. Hent én mappe tilbage til en midlertidig mappe og se på den:
source /root/.restic-env
restic restore latest --target /tmp/restore-test --include /etc/nginx
ls -la /tmp/restore-test/etc/nginx
restic check
Gør det én gang nu og igen med nogle måneders mellemrum. restic check verificerer repositoryets struktur; gendannelsen beviser, at dataene virkelig er der.
restic og Managed Backups
De konkurrerer ikke. Managed Backups tager dagligt et gendannelsespunkt for hele serveren, som du ruller tilbage fra panelet — den hurtige løsning efter en opgradering, der gik galt. De koster $2 om måneden og er gratis med enhver årsplan. restic giver dig eksterne kopier på filniveau i lagring, du selv kontrollerer, og det betyder noget, når problemet er en fil, der blev slettet i tirsdags, eller når du vil have en kopi helt uden for vores infrastruktur.
Opbevarer du følsomme data, så kombinér dette med fuld diskkryptering, eller se på brugsscenariet krypteret lagring for at køre dit eget backupmål. En Micro-plan er nok til de fleste små servere plus deres backupjob.
Kommentarer
Ingen kommentarer endnu. Vær den første.