Skip to content
VDS · Bekapi i disk

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-pass na 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.
  • forget bez --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/docker nisu 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.