Skip to content
VDS · Zálohy a disk

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/www dávajú rozdielne výsledky a v spojení s --delete ten 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

  • --delete s 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. -z len 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=20000 a 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.