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-passna 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.
forgetbez--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/dockernie 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.