
Zašto automatizovati backup na Linuxu i koje probleme sprečavate
Ako upravljate serverima ili radnom stanicom pod Linuxom, znate da ručni backup brzo postane nepouzdan. Vi možete izgubiti podatke zbog čestih grešaka — ljudskih, hardverskih ili softverskih. Automatizacija omogućava da kopije podataka nastaju redovno, dosledno i bez potrebe za svakodnevnom intervencijom.
Automatski backup rešenja vam pomažu da rešite ključne probleme: konzistentnost (datoteke se snimaju u predviđenim intervalima), dostupnost (kopije su spremne za vraćanje) i sanacija (mogućnost brzog oporavka). Takođe, automatizacija olakšava primenu pravila zadržavanja verzija, enkripciju i sinhronizaciju sa udaljenim skladištem.
Osnovni zahtevi i smernice pre automatizacije
Pre nego što krenete da pišete skripte i zakazujete zadatke, pripremite nekoliko stvari:
- Mapa i obim backup-a: odredite koje direktorijume i baze treba obuhvatiti (npr. /etc, /var/lib, korisnički podaci).
- Tip backup-a: puna, inkrementalna ili diferencijalna kopija — izaberite prema veličini podataka i brzini obnavljanja.
- Skladište: lokalni disk, NAS, S3-kompatibilni servis ili kombinacija (lokalno + offsite) za bolju otpornost.
- Bezbednost: enkripcija arhiva i kontrola pristupa kako bi backup ostao zaštićen.
- Test oporavka: plan i periodično testiranje vraćanja podataka kako biste proverili integritet kopija.
Pregled alata: Cron, systemd timers i skripte — kada šta koristiti
Na Linuxu imate nekoliko zrelih mehanizama za zakazivanje zadataka. Vi treba da izaberete onaj koji najbolje odgovara vašem okruženju i zahtevima.
Cron — jednostavnost i široka podrška
Cron je tradicionalni planer zadataka koji radi na većini distribucija. Najpogodniji je za jednostavne, ponavljajuće zadatke (npr. dnevni backup u 03:00). Vi ćete koristiti crontab za raspoređivanje izvršavanja skripti. Prednost je kompatibilnost i lakoća podešavanja; mana je ograničena kontrola konteksta i menadžment grešaka.
systemd timers — moderna kontrola i integracija
Systemd timers su pogodniji kada želite bolju integraciju sa systemd jedinicama (units), zatezanje zavisnosti, restart politike i logovanje preko journal-a. Ako koristite systemd na serverima, timers omogućavaju preciznije raspoređivanje i lakše praćenje stanja zadataka u odnosu na klasičan cron.
Skripte — srce automatizacije
Skripte (bash, python ili drugi jezici) definišu šta backup radi: arhiviranje, enkripcija, prenos i čišćenje starih kopija. Vi treba da pišete sklopive, idempotentne skripte koje se mogu lako pozvati i iz cron-a i iz systemd timer-a. U sledećem delu ćemo konkretno pokazati primere skripti i kako ih povezati sa Cron i systemd timers za različite scenarije.

Praktični primeri skripti za backup (osnovni obrasci)
Najbolji način da počnete je sa jednostavnim, čitljivim skriptama koje rade jednu stvar i prijavljuju rezultat. Ovde su tri često korišćena obrasca: arhiviranje (tar), sinhronizacija (rsync) i slanje u oblak (rclone). Uvek testirajte skriptu ručno pre nego što je automatizujete.
1) Jednostavan dnevni tar sa enkripcijom:
#!/bin/bash
set -euo pipefail
BACKUP_DIR=/backup
SRC="/etc /home /var/www"
DATE=$(date +%F)
OUT="$BACKUP_DIR/backup-$DATE.tar.gz"
EXCLUDE="--exclude=/home/*/.cache"
mkdir -p "$BACKUP_DIR"
tar czf - $EXCLUDE $SRC | gpg --symmetric --cipher-algo AES256 -o "$OUT.gpg"
echo "OK: $OUT.gpg"
Napomene: koristite GPG passphrase iz sigurne lokacije (env var ili keyring) i pazite na dozvole za backup direktorijum.
2) Inkrementalni / ralni backup preko rsync-a:
#!/bin/bash
SRC="/home/"
DEST="/mnt/backup/home/"
RSYNC_OPTS="-aHAX --delete --numeric-ids --partial"
rsync $RSYNC_OPTS "$SRC" "$DEST"
Rsync je efikasan za velike fajl-strukture; za dodatnu istoriju koristite hardlink-based outils (npr. rsnapshot) ili snapshot filesystem-a (btrfs, ZFS).
3) Slanje kopija u S3-kompatibilno skladište sa rclone:
#!/bin/bash
LOCAL="/backup/backup-$(date +%F).tar.gz"
REMOTE="s3:my-bucket/backups/"
rclone copy "$LOCAL" "$REMOTE" --s3-storage-class STANDARD_IA
Rclone olakšava transfer, pregledaće i ponovni transfer samo onih fajlova koji nedostaju.
Povezivanje skripti sa Cron-om i systemd timers — primjeri konfiguracije
Nakon što skripta radi lokalno, povezivanje sa planerom je praktično trivijalno. Obratite pažnju na okruženje u kojem će skripta biti pokrenuta: crontab često ima ograničen PATH i ne izvozi sve varijable.
Primer crontab linije (root crontab):
# Dnevni backup u 03:30
30 3 * /usr/local/bin/backup-daily.sh >> /var/log/backup/backup-daily.log 2>&1
Savet: u skriptu eksplicitno postavite PATH i ostale varijable, i rotirajte log fajlove pomoću logrotate ili jednostavnim rename/rotate u skripti.
Primena systemd timers (kad želite bolju integraciju i logovanje): kreirajte dve datoteke, servis i timer.
# /etc/systemd/system/backup.service
[Unit]
Description=Daily backup service
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup-daily.sh
Nice=10
# /etc/systemd/system/backup.timer
[Unit]
Description=Run daily backup
[Timer]
OnCalendar=--* 03:30:00
Persistent=true
[Install]
WantedBy=timers.target
Aktivirajte i pokrenite:
systemctl daemon-reload
systemctl enable --now backup.timer
journalctl -u backup.service
Prednosti systemd timer-a: centralno logovanje u journal, jednostavna kontrola restart politika i trivijalno izvršavanje zavisnosti (npr. mount target pre backup-a).

Rotacija, zadržavanje i monitoring — praktične preporuke
Bez politike zadržavanja, backup prostor će brzo nestati. Jednostavna komanda za brisanje starih arhiva:
# obriši backup stariji od 30 dana
find /backup -type f -name 'backup-.tar.gz' -mtime +30 -delete
Koristite vremenski označene fajlove, dokumentujte politiku (npr. 7 dana dnevnih, 4 nedeljna, 12 mesečnih) i razmislite o verzionisanju. Monitorujte uspeh zadataka: skripte bi trebalo da vraćaju net-zero exit kod i šalju upozorenje (mail, webhook, Slack) u slučaju greške. Za systemd, koristite OnFailure= za zahtev za obaveštenje.
Na kraju, automatik nije zamena za test oporavka — redovno vraćajte nasumične fajlove i kompletne restore testove kako biste proverili integritet i proceduru. Samo tako automatizacija postaje stvarno pouzdana.
Sledeći koraci i održavanje
Automatizacija backup-a je proces koji zahteva kontinuiranu pažnju — ne radi se samo o postavljanju zadatka i zaboravljanju. Posvetite vreme redovnom testiranju, reviziji politika zadržavanja i prilagođavanju skripti kako se potrebe i infrastruktura menjaju. Dokumentujte procedure, odgovornosti i tačne korake za hitan oporavak.
- Planirajte periodične testove vraćanja i beležite rezultate.
- Postavite monitoring i obaveštenja koja vas odmah informišu o neuspehu.
- Čuvajte tajne i ključeve u sigurnom keystore-u ili password manageru, ne u plain-text skriptama.
- Redovno proveravajte dostupnost offsite kopija i integritet arhiva.
Ako koristite alate za prenos u oblak ili napredne sinhronizacije, koristite zvaničnu dokumentaciju kao izvor najpouzdanijih preporuka — na primer rclone dokumentacija za konfiguraciju i bezbedne prakse pri radu sa S3-kompatibilnim servisima.
Frequently Asked Questions
Kako često treba pokretati backup?
Frekvencija zavisi od kritičnosti podataka i promena: za visokoaktivne sisteme razmotrite satne ili inkrementalne backup-e; za manje kritične podatke dovoljan je dnevni ili nedeljni raspored. Ključno je da politika odgovara vašem RPO/RTO zahtevu i da je dosledno primenjivana.
Koji je bolji izbor za zakazivanje — cron ili systemd timer?
Ako vam treba jednostavnost i kompatibilnost sa starijim sistemima, cron je dovoljan. Ako želite bolju integraciju sa servisima, centralizovano logovanje i napredne politike restartovanja, systemd timers su bolji izbor. Oba mogu pozivati iste skripte; odluka zavisi od okoline i potreba za upravljanjem.
Gde bezbedno čuvati GPG passphrase ili S3 kredencijale korišćene u skriptama?
Nemojte ih držati u skriptama ili javno dostupnim fajlovima. Koristite sigurni keystore (npr. systemd-ask-password, HashiCorp Vault, ili distribucioni keyring) ili environment manager koji obezbeđuje enkripciju i kontrolu pristupa. Takođe ograničite dozvole fajlova i pratite pristup logovima.
