−25%

la planurile Windows anuale, până pe 31 oct. Vezi planurile

EQVPS
Începe

Cum faci backup unui VPS cu restic (criptat, în afara serverului)

Backup-uri VPS criptate și deduplicate cu restic: un repository pe stocare compatibilă S3 sau pe alt server, un timer systemd, politica de păstrare și un test de restaurare.

Toată lumea are backup-uri până încearcă să restaureze unul. Se dovedește că folderul e gol, cron jobul a murit în martie sau arhiva stă pe același disc care tocmai a cedat. restic rezolvă cea mai mare parte din asta: criptează pe partea ta, stochează fiecare bucată de date o singură dată și face ca restaurarea unui singur fișier să fie la fel de ușoară ca backup-ul întregului server.

Iată o configurare în care chiar am avea încredere, pe Ubuntu sau Debian.

1. Instalează restic

apt update && apt install -y restic
restic self-update

Pachetele distribuției rămân în urmă; self-update aduce versiunea curentă.

2. Alege un loc pentru repository

Repository-ul nu trebuie să stea pe serverul pe care îl protejezi. Două alegeri obișnuite:

  • Alt server, prin SFTP: sftp:backup@203.0.113.20:/srv/restic/web1
  • Object storage compatibil S3: s3:https://s3.example.com/my-bucket/web1

3. Stochează datele de acces

Ține totul într-un singur fișier, accesibil doar pentru root, ca timerul și shellul tău să folosească aceleași setări:

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

Acum copiază conținutul /root/.restic-pass în managerul de parole. Fără el, backup-urile nu pot fi decriptate — nici de tine, nici de altcineva.

4. Inițializează și rulează primul backup

source /root/.restic-env
restic init
restic backup /etc /home /root /srv /var/www \
  --exclude-caches --exclude '/root/.cache'
restic snapshots

Ajustează căile la locul unde stau efectiv datele tale. Volumele Docker sunt în /var/lib/docker/volumes; datele aplicațiilor sunt adesea în /srv sau /opt.

5. Baze de date: dump, apoi backup

Nu face backup fișierelor brute ale unei baze de date care rulează. Fă un dump chiar înainte de backup:

mkdir -p /var/backups/db
sudo -u postgres pg_dump -Fc mydb > /var/backups/db/mydb.dump

Adaugă /var/backups/db la căile de backup. Ghidul nostru PostgreSQL are mai multe despre dumpuri.

6. Programează-l cu systemd

Aici un timer e mai bun decât cron: scrie în jurnal și recuperează rularea dacă serverul era oprit la ora programată.

# /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 păstrează 7 copii zilnice, 4 săptămânale și 6 lunare și le șterge pe restul. Dacă ai un pas de dump al bazei de date, pune-l într-o linie ExecStartPre=.

7. Chiar restaurează ceva

Ăsta e pasul care transformă „avem backup-uri” într-un fapt. Adu înapoi un director într-un folder temporar și uită-te în el:

source /root/.restic-env
restic restore latest --target /tmp/restore-test --include /etc/nginx
ls -la /tmp/restore-test/etc/nginx
restic check

Fă asta o dată acum și din nou la câteva luni. restic check verifică structura repository-ului; restaurarea dovedește că datele chiar sunt acolo.

restic și Backup-urile administrate

Nu concurează. Backup-urile administrate fac zilnic un punct de restaurare pentru tot serverul, la care revii din dashboard — repararea rapidă după un upgrade stricat. Costă $2/lună și sunt incluse gratuit în orice plan anual. restic îți dă copii la nivel de fișiere, în afara serverului, într-o stocare pe care o controlezi, ceea ce contează când problema e un fișier șters marțea trecută sau vrei o copie complet în afara infrastructurii noastre.

Dacă stochezi date sensibile, combină asta cu criptarea completă a discului sau uită-te la cazul de utilizare pentru stocare criptată, ca să-ți rulezi propria destinație de backup. Un plan Micro ajunge pentru majoritatea serverelor mici, plus sarcinile lor de backup.

Întrebări frecvente

Ce se întâmplă dacă pierd parola restic?

Backup-urile sunt pierdute definitiv. restic criptează totul pe partea clientului și nu există cheie de recuperare. Păstrează parola într-un manager de parole, nu doar pe serverul căruia îi faci backup.

Unde ar trebui să stea repository-ul?

Oriunde, în afară de serverul însuși: object storage compatibil S3, alt VPS prin SFTP sau o mașină de acasă. Un backup pe același disc moare odată cu discul.

Cum fac backup unei baze de date cu restic?

Fă întâi un dump și salvează dumpul — pentru PostgreSQL 'pg_dump -Fc', pentru MySQL 'mysqldump --single-transaction'. Copierea fișierelor unei baze de date care rulează îți poate da un backup care nu mai pornește.

Cât spațiu ocupă backup-urile?

Mai puțin decât te-ai aștepta. restic împarte fișierele în bucăți și stochează fiecare bucată o singură dată, așa că copiile zilnice ale unui server care se schimbă puțin adaugă doar datele modificate.

Mai am nevoie de Backup-urile administrate?

Rezolvă probleme diferite. Backup-urile administrate îți dau puncte zilnice de restaurare pentru tot serverul, la care revii din dashboard. restic îți dă copii la nivel de fișiere, în afara serverului, pe care le controlezi tu. Mulți oameni le folosesc pe amândouă.

Comentarii

Încă nu există comentarii. Fii primul.

Lasă un comentariu

Comentariile sunt moderate înainte să apară.