Zálohy pomocou rsync
Ako nastaviť kopírovanie súborov na iný server cez SSH, vytvoriť históriu verzií pomocou hard linkov a nezmazať príliš veľa nebezpečnou voľbou --delete.
Aktualizované 23. augusta 2026
rsync je najjednoduchší funkčný spôsob, ako vytvárať kópie: je dostupný všade, prenáša len zmenené časti súborov a funguje cez SSH. Pre malé objemy dát to stačí.
Základný príkaz
rsync -avz --delete \
-e "ssh -i /root/.ssh/backup_key -p 22" \
/var/www/ backup@backup.example.com:/srv/backup/vds/www/
Rozbor parametrov:
-a— zachová práva, vlastníkov, časy a odkazy;-v— zobrazuje, čo sa deje;-z— komprimuje počas prenosu (užitočné pri priepustnosti do 500 Mbps, ak je dát veľa);--delete— vymaže na cieľi to, čo už na zdroji neexistuje.
Lomítko na konci cesty zdroja znamená „obsah adresára“; bez neho sa kopíruje samotný adresár.
/var/www/a/var/wwwdávajú rozdielne výsledky a v spojení s--deleteten rozdiel vymaže to nesprávne. Vždy najprv spusti s--dry-run.
rsync -avzn --delete /var/www/ backup@backup.example.com:/srv/backup/vds/www/
Parameter -n je skúšobný beh.
Prístupový kľúč bez hesla
Plánované kopírovanie vyžaduje prihlásenie bez zadávania hesla:
ssh-keygen -t ed25519 -f /root/.ssh/backup_key -N ""
ssh-copy-id -i /root/.ssh/backup_key.pub backup@backup.example.com
Na cieľi obmedz tento kľúč na jediný príkaz — potom ukradnutý kľúč nedá shell. V ~/.ssh/authorized_keys na cieľi:
command="rrsync -wo /srv/backup",restrict ssh-ed25519 AAAA... backup
História verzií pomocou pevných odkazov
Bežný rsync uchováva len aktuálny stav: ak si včera vymazal súbor a dnes si to všimol, nemáš ho odkiaľ obnoviť. --link-dest ti dá históriu: nezmenené súbory sa znova nekopírujú, ale odkazujú, takže tridsať kópií zaberie len o málo viac než jedna.
#!/bin/bash
set -euo pipefail
DEST=/srv/backup/vds
TODAY=$(date +%F)
rsync -a --delete \
--link-dest="$DEST/latest" \
/var/www/ "$DEST/$TODAY/"
ln -sfn "$DEST/$TODAY" "$DEST/latest"
find "$DEST" -maxdepth 1 -type d -mtime +30 -name "20*" -exec rm -rf {} +
Skript spúšťaj podľa plánu v noci a vždy s logovaním.
Vylúčenia
rsync -avz --exclude-from=/root/backup-exclude.txt / backup@host:/srv/backup/vds/root/
/proc/
/sys/
/dev/
/run/
/tmp/
/var/lib/docker/
/var/cache/
*.log
Kopírovanie celého koreňa je málokedy potrebné: užitočnejšie je zostaviť presný zoznam podľa článku čo presne zálohovať.
Kedy rsync nie je vhodný
- Ak potrebuješ šifrovanie úložiska a deduplikáciu, použi Restic.
- Ak sa dáta neustále menia a záleží na integrite, najprv vysyp databázu a potom rsyncuj výsledný súbor.
- Cieľom je cudzie úložisko, ktorému nedôveruješ: rsync zapisuje súbory tak, ako sú, bez šifrovania na strane klienta.
Časté chyby
--deletes nesprávnou cestou zdroja. Prázdny adresár zdroja vymaže cieľ. Skúšobný beh je povinný.- Kópia na tom istom disku. To nie je záloha, ale druhý cieľ pre tú istú poruchu. Pozri kópie mimo lokality.
- Komprimovanie už skomprimovaných dát.
-zlen spomalí archivy a obrázky. - Nočný beh narazí na úzke hrdlo disku. Limit rýchlosti zápisu závisí od tarifu: pozri rýchlosť disku. Pomôže
--bwlimit=20000a spustenie mimo špičky. - Výsledok nikto nekontroluje. Loguj návratový kód a sleduj ho:
rsync ... || echo "backup failed" | mail -s alert you@example.com.