−25%

på Windows ved årlig betaling, til 31/10. Se pakkerne

EQVPS

Sådan tager du backup af en VPS med restic (krypteret, eksternt)

Krypterede, deduplikerede VPS-backups med restic: et repository på S3-kompatibel lagring eller en anden server, en systemd-timer, opbevaringsregler og en gendannelsestest.

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:

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.

FAQ

Hvad sker der, hvis jeg mister restic-adgangskoden?

Så er backupperne væk for altid. restic krypterer alt på klientsiden, og der findes ingen gendannelsesnøgle. Gem adgangskoden i en adgangskodeadministrator, ikke kun på den server, du tager backup af.

Hvor skal repositoryet ligge?

Alle andre steder end på selve serveren: S3-kompatibel objektlagring, en anden VPS over SFTP eller en maskine derhjemme. En backup på samme disk dør sammen med den disk.

Hvordan tager jeg backup af en database med restic?

Lav et dump først, og tag backup af dumpet — til PostgreSQL 'pg_dump -Fc', til MySQL 'mysqldump --single-transaction'. At kopiere filerne fra en kørende database kan give en backup, der ikke vil starte.

Hvor meget plads fylder backupperne?

Mindre end du tror. restic deler filer i bidder og gemmer hver bid én gang, så daglige snapshots af en server, der mest er uændret, tilføjer kun de ændrede data.

Har jeg stadig brug for Managed Backups?

De løser forskellige problemer. Managed Backups giver dig daglige gendannelsespunkter for hele serveren, som du ruller tilbage fra panelet. restic giver dig eksterne kopier på filniveau, som du selv styrer. Mange bruger begge dele.

Kommentarer

Ingen kommentarer endnu. Vær den første.

Skriv en kommentar

Kommentarer modereres, før de vises.