rsync přenáší pouze změněné části souborů pomocí delta algoritmu, což dramaticky snižuje objem přenesených dat při opakovaných zálohách. Oproti jednoduchému cp nebo scp šetří čas i šířku pásma, protože porovnává checksummy bloků a přenáší jen rozdíly. Je to základ většiny backup strategií na Linuxu.
Základy¶
rsync -avz /src/ user@server:/dest/
# -a archive (rekurzivně, zachovává permissions, timestamps, symlinky)
# -v verbose, -z komprese při přenosu
# --delete smaže soubory v cíli, které nejsou ve zdroji
Důležité: trailing slash u zdrojového adresáře určuje, zda se kopíruje obsah adresáře nebo adresář samotný. /src/ kopíruje obsah, /src kopíruje celý adresář do cíle.
Inkrementální zálohy¶
#!/bin/bash
DATE=$(date +%Y-%m-%d)
rsync -av --delete --link-dest=/backups/latest /data/ /backups/$DATE/
ln -sf /backups/$DATE /backups/latest
Parametr --link-dest vytváří hardlinky na nezměněné soubory z referenční zálohy. Každá záloha vypadá jako kompletní kopie, ale nezměněné soubory zabírají nula extra místa na disku. Tato technika umožňuje mít 30 denních záloh s minimálním overhead, protože se ukládají jen skutečné změny.
Alternativy¶
- restic — deduplikace, šifrování, podpora cloud backendu (S3, B2, Azure)
- borg — vynikající komprese a deduplikace, šifrování, mount záloh jako FS
- rclone — synchronizace s cloud storage (40+ providerů)
Rotace a retence¶
Efektivní backup strategie zahrnuje automatickou rotaci — denní zálohy po 7 dní, týdenní po měsíc, měsíční po rok. Cron job v kombinaci s find příkazem pro mazání starých záloh zajistí, že diskový prostor neroste neomezeně.
3-2-1 pravidlo¶
3 kopie dat, 2 různá média, 1 offsite lokace. rsync je základ pro lokální a remote zálohy. Pro produkční prostředí kombinujte s restic nebo borg pro šifrování a deduplikaci.