Backup podataka Linux: automatizacija s Cron, systemd timers i skriptama

Article Image

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.

Article Image

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).

Article Image

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.