Skip to content
VDS · Zálohy a disk

Restic: zálohy so šifrovaním a históriou

Ako nastaviť zálohy s end-to-end šifrovaním, deduplikáciou a snapshotmi podľa dátumu, zautomatizovať ich a overiť integritu.

Aktualizované 23. augusta 2026

Restic rieši to, čo rsync nedokáže: šifruje dáta pred odoslaním, uchováva históriu snímok, nekopíruje tie isté bloky dvakrát a dokáže ukladať zálohy do S3-kompatibilného úložiska. Jeden program bez závislostí.

Inštalácia a tvoje prvé úložisko

sudo apt install -y restic
restic version

Úložisko je miesto, kde žijú tvoje zálohy. Môže to byť adresár, stroj cez SFTP alebo objektové úložisko:

export RESTIC_REPOSITORY="sftp:backup@backup.example.com:/srv/restic"
export RESTIC_PASSWORD_FILE=/root/.restic-pass

head -c 32 /dev/urandom | base64 > /root/.restic-pass
chmod 600 /root/.restic-pass
restic init

Heslo k úložisku sa nedá obnoviť. Ak ho zabudneš, tvoje dáta sú preč — podpora tu zámerne neexistuje. Ulož si ho oddelene od stroja: do správcu hesiel, na papier, kamkoľvek — ale nie iba do súboru /root/.restic-pass na tom istom stroji, ktorý zálohuješ.

Vytvorenie zálohy

restic backup /var/www /etc/nginx /opt/myapp \
  --exclude-file=/root/restic-exclude.txt \
  --tag daily
restic snapshots
restic ls latest
restic stats

Druhé a ďalšie spustenia sú rýchle: prenesú sa len nové bloky dát.

Obnovenie

restic restore latest --target /restore
restic restore <snapshot-id> --target /restore --include /var/www/uploads

Ešte pohodlnejšie je pozrieť si obsah bez rozbaľovania všetkého:

mkdir /mnt/snapshots
restic mount /mnt/snapshots

Adresár zobrazuje všetky snímky podľa dátumu ako bežné priečinky. Je to najlepší spôsob, ako vytiahnuť jeden omylom zmazaný súbor.

Plánovanie a čistenie

Skript /usr/local/bin/backup.sh:

#!/bin/bash
set -euo pipefail
export RESTIC_REPOSITORY="sftp:backup@backup.example.com:/srv/restic"
export RESTIC_PASSWORD_FILE=/root/.restic-pass

docker compose -f /opt/myapp/compose.yaml exec -T db \
  pg_dump -U postgres app | gzip > /var/backups/db.sql.gz

restic backup /var/www /etc/nginx /opt/myapp /var/backups --tag daily
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
chmod 700 /usr/local/bin/backup.sh

Nasleduje systémový časovač systemd, pozri plánované úlohy. forget --prune odstráni nadbytočné snímky a uvoľní miesto; bez --prune snímky zmiznú zo zoznamu, ale dáta zostanú.

Kontroly integrity

restic check
restic check --read-data-subset=5%

Prvý príkaz skontroluje štruktúru, druhý prečíta časť dát a overí kontrolné súčty. Druhý spúšťaj raz za mesiac: zaťažuje disk a prenos, ale práve on odhalí tiché poškodenie.

Kontrola štruktúry nenahrádza skutočné obnovenie — pozri skúšobné obnovenie.

Zdroje

Restic drží index v pamäti: pri veľkých dátových sadách to sú stovky megabajtov. Na VDS-1 s 2 GB RAM môže zálohovanie desiatok gigabajtov nestačiť — obmedz paralelizmus alebo presuň ťažké zálohy o úroveň vyššie. Zaťaženie disku je citeľné, takže plánuj na noc: pozri rýchlosť disku.

Časté chyby

  • Heslo je uložené len na stroji, ktorý sa zálohuje. Klasika: stroj sa stratí aj s kľúčom k zálohám.
  • forget bez --prune. Miesto sa neuvoľní a úložisko stále rastie.
  • Záloha v tom istom adresári na tom istom disku. Nebudeš mať odkiaľ obnovovať — pozri zálohy na inom mieste.
  • Cache a /var/lib/docker nie sú vylúčené. Záloha napuchne štvornásobne bez úžitku; zoznam toho, čo zahrnúť, je v článku čo zálohovať.
  • Paralelné spustenia. Druhé spustenie narazí na zámok úložiska. Obaľ volanie do flock.