Restic: bekapi sa enkripcijom i istorijom
Kako da podesiš bekape sa end-to-end enkripcijom, deduplikacijom i snimcima po datumu, da ih automatizuješ i proveriš integritet.
Ažurirano 23. avgust 2026.
Restic rešava ono što rsync ne može: šifruje podatke pre slanja, čuva istoriju snimaka, ne kopira iste delove dvaput i može da čuva bekape u S3-kompatibilnom skladištu. Jedan program bez zavisnosti.
Instalacija i prvi repozitorijum
sudo apt install -y restic
restic version
Repozitorijum je mesto gde žive tvoji bekapovi. Može biti direktorijum, mašina preko SFTP-a ili objektno skladište:
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
Lozinka repozitorijuma ne može da se povrati. Ako je zaboraviš, podaci su izgubljeni — podrška ovde ne postoji, i to namerno. Čuvaj je odvojeno od mašine: u menadžeru lozinki, na papiru, bilo gde — ali ne samo u fajlu
/root/.restic-passna baš onoj mašini koju bekapuješ.
Pravljenje bekapa
restic backup /var/www /etc/nginx /opt/myapp \
--exclude-file=/root/restic-exclude.txt \
--tag daily
restic snapshots
restic ls latest
restic stats
Drugi i svaki sledeći pokretanje su brzi: prenose se samo novi delovi podataka.
Vraćanje
restic restore latest --target /restore
restic restore <snapshot-id> --target /restore --include /var/www/uploads
Još je praktičnije da pregledaš sadržaj bez raspakivanja svega:
mkdir /mnt/snapshots
restic mount /mnt/snapshots
Direktorijum prikazuje sve snimke po datumu kao obične foldere. To je najbolji način da izvučeš jedan slučajno obrisan fajl.
Zakazivanje i čišćenje
Skripta /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
Zatim ide systemd tajmer, vidi zakazani zadaci. forget --prune uklanja višak snimaka i oslobađa prostor; bez --prune snimci nestaju iz liste, ali podaci ostaju.
Provere integriteta
restic check
restic check --read-data-subset=5%
Prva komanda proverava strukturu, druga čita deo podataka i verifikuje kontrolne sume. Pokreni drugu jednom mesečno: opterećuje disk i protok, ali upravo ona hvata tiha oštećenja.
Provera strukture ne zamenjuje pravo vraćanje — vidi proba vraćanja.
Resursi
Restic drži indeks u memoriji: na velikim skupovima podataka to su stotine megabajta. Na VDS-1 sa 2 GB RAM-a, bekapovanje desetina gigabajta može da bude tesno — ograniči paralelizam ili prebaci teške bekapove jedan nivo više. Opterećenje diska je primetno, pa zakaži za noć: vidi brzina diska.
Česte greške
- Lozinka se čuva samo na mašini koja se bekapuje. Klasika: mašina se izgubi zajedno sa ključem od bekapova.
forgetbez--prune. Prostor se ne oslobađa i repozitorijum nastavlja da raste.- Bekap u istom direktorijumu na istom disku. Nemaš odakle da vratiš — vidi bekapovi na drugoj lokaciji.
- Keševi i
/var/lib/dockernisu izuzeti. Bekap se naduva četvorostruko bez ikakve koristi; spisak šta uključiti je u članku šta bekapovati. - Paralelna pokretanja. Drugo pokretanje će naleteti na zaključavanje repozitorijuma. Obmotaj poziv u
flock.