Linux a zálohování — filozofie přístupu
Linux je unikátní v tom, že nabízí neuvěřitelnou flexibilitu při zálohování. Na rozdíl od Windows nebo macOS, kde jste do značné míry odkázáni na vestavěné nástroje, Linux vám dává plnou kontrolu — od jednoduchých shellových skriptů přes specializované nástroje po enterprise řešení.
Tato flexibilita je zároveň výhodou i výzvou. Neexistuje jedno „správné" řešení — záleží na tom, zda zálohujete domácí desktop, webový server, databázový cluster nebo kontejnerizovanou infrastrukturu.
Co zálohovat na Linuxu
- /home — uživatelská data, konfigurace desktopových aplikací
- /etc — systémová konfigurace (network, cron, fstab, služby)
- /var — logy, databáze, webové stránky, e-mailové schránky
- /opt, /usr/local — ručně instalovaný software
- /root — konfigurace uživatele root
- Seznam balíčků — pro reprodukci instalace
- Crontab — naplánované úlohy
- Systémové služby — vlastní systemd unit soubory
Uložte si seznam nainstalovaných balíčků pro snadnou reinstalaci:
# Debian/Ubuntu
dpkg --get-selections > ~/zaloha/balicky.list
# nebo
apt list --installed > ~/zaloha/balicky-apt.list
# Fedora/RHEL/CentOS
rpm -qa > ~/zaloha/balicky-rpm.list
# nebo
dnf list installed > ~/zaloha/balicky-dnf.list
# Arch Linux
pacman -Qqe > ~/zaloha/balicky-pacman.list
rsync — základ linuxového zálohování
Nástroj rsync je pravděpodobně nejpoužívanější zálohovací nástroj na Linuxu. Umí efektivně synchronizovat soubory lokálně i přes síť, přenáší pouze změněné části souborů (delta transfer) a podporuje kompresi.
Základní použití rsync
# Základní záloha /home na externí disk
rsync -avz --progress /home/ /mnt/backup/home/
# Záloha s vyloučením nepotřebných souborů
rsync -avz --exclude='.cache' \
--exclude='.local/share/Trash' \
--exclude='node_modules' \
--exclude='.npm' \
--exclude='__pycache__' \
/home/uzivatel/ /mnt/backup/home-uzivatel/
# Inkrementální záloha s hard linky (úspora místa)
rsync -avz --link-dest=/mnt/backup/latest \
/home/ /mnt/backup/$(date +%Y-%m-%d)/
Vzdálená záloha přes SSH
# Záloha na vzdálený server
rsync -avz -e "ssh -p 22" /home/ uzivatel@server:/backup/home/
# Záloha se šifrovaným tunelem a kompresí
rsync -avz --compress-level=9 \
-e "ssh -i ~/.ssh/backup_key" \
/var/www/ uzivatel@backup-server:/zalohy/www/
# Záloha ze vzdáleného serveru na lokální disk
rsync -avz uzivatel@server:/etc/ /mnt/backup/server-etc/
-a (archivní mód — zachovává oprávnění, časy, symbolické odkazy), -v (verbose — podrobný výstup), -z (komprese při přenosu), --delete (smaže soubory v cíli, které neexistují ve zdroji — pozor, použijte opatrně!), --dry-run (simulace bez skutečného kopírování).
Skript pro rotované zálohy s rsync
#!/bin/bash
# Rotovaná záloha pomocí rsync a hard linků
# Uchovává denní zálohy po dobu 7 dní
ZDROJ="/home/"
CIL="/mnt/backup"
DATUM=$(date +%Y-%m-%d)
NEJNOVEJSI="$CIL/latest"
AKTUALNI="$CIL/$DATUM"
# Vytvoření zálohy s hard linky na předchozí verzi
rsync -avz --delete \
--link-dest="$NEJNOVEJSI" \
--exclude='.cache' \
--exclude='.local/share/Trash' \
"$ZDROJ" "$AKTUALNI/"
# Aktualizace symbolického odkazu
rm -f "$NEJNOVEJSI"
ln -s "$AKTUALNI" "$NEJNOVEJSI"
# Smazání záloh starších než 7 dní
find "$CIL" -maxdepth 1 -type d -name "20*" -mtime +7 -exec rm -rf {} \;
echo "Záloha $DATUM dokončena."
tar — archivace a komprese
Nástroj tar vytváří archivy souborů a adresářů. Je ideální pro jednorázové zálohy nebo pro vytváření komprimovaných archivů k přenosu.
# Kompletní záloha /etc s gzip kompresí
tar -czf /mnt/backup/etc-$(date +%Y%m%d).tar.gz /etc/
# Záloha /home s vyšší kompresí (xz)
tar -cJf /mnt/backup/home-$(date +%Y%m%d).tar.xz /home/
# Záloha s vyloučením souborů
tar -czf /mnt/backup/www-$(date +%Y%m%d).tar.gz \
--exclude='*.log' \
--exclude='node_modules' \
--exclude='.git' \
/var/www/
# Inkrementální záloha s tar (pomocí snapshot souboru)
tar --listed-incremental=/mnt/backup/snapshot.snar \
-czf /mnt/backup/home-incr-$(date +%Y%m%d).tar.gz /home/
# Obnova z tar archivu
tar -xzf /mnt/backup/etc-20260314.tar.gz -C /tmp/obnova/
dd — nízkoúrovňové klonování disků
Příkaz dd kopíruje data na úrovni bloků. Hodí se pro vytváření přesných kopií celých disků nebo oddílů, včetně bootovacích záznamů.
# Klonování celého disku (POZOR na správné zadání zdroje a cíle!)
dd if=/dev/sda of=/dev/sdb bs=4M status=progress
# Vytvoření obrazu disku do souboru
dd if=/dev/sda of=/mnt/backup/disk-image.img bs=4M status=progress
# Komprimovaný obraz disku
dd if=/dev/sda bs=4M status=progress | gzip > /mnt/backup/disk.img.gz
# Záloha MBR (prvních 512 bajtů)
dd if=/dev/sda of=/mnt/backup/mbr.bin bs=512 count=1
# Obnova z komprimovaného obrazu
gunzip -c /mnt/backup/disk.img.gz | dd of=/dev/sda bs=4M status=progress
dd je přezdíván „disk destroyer", protože záměna if (vstup) a of (výstup) může nevratně přepsat zdrojový disk. Vždy dvakrát zkontrolujte parametry příkazu. Používejte lsblk pro ověření správného disku.
cpio — archivace se zachováním struktury
Nástroj cpio je méně známý, ale stále užitečný pro zálohy. Čte seznam souborů ze standardního vstupu, což ho činí velmi flexibilním:
# Záloha všech konfiguračních souborů
find /etc -type f | cpio -o > /mnt/backup/etc-backup.cpio
# Záloha s kompresí
find /etc -type f | cpio -o | gzip > /mnt/backup/etc-backup.cpio.gz
# Obnova
cd /tmp/obnova && cpio -id < /mnt/backup/etc-backup.cpio
Timeshift — záloha systému pro desktopy
Timeshift je grafický nástroj pro vytváření systémových snapshotů na linuxových desktopech. Funguje podobně jako Time Machine na macOS nebo Obnovení systému na Windows. Je oblíbený zejména v distribucích Linux Mint a Manjaro.
Instalace a nastavení
# Ubuntu/Linux Mint
sudo apt install timeshift
# Fedora
sudo dnf install timeshift
# Arch Linux
yay -S timeshift
Timeshift podporuje dva režimy:
- RSYNC — funguje na všech souborových systémech, vytváří zálohy pomocí rsync a hard linků
- BTRFS — využívá nativní snapshoty btrfs, extrémně rychlé a úsporné
Snapper — správa snapshotů btrfs a LVM
Snapper je nástroj od SUSE pro správu snapshotů souborových systémů btrfs a LVM thin-provisioned svazků. V openSUSE je integrován přímo do systému a automaticky vytváří snapshoty před a po každé instalaci balíčků.
# Vytvoření konfigurace pro kořenový oddíl
sudo snapper create-config /
# Vytvoření ručního snapshotu
sudo snapper create --description "Před aktualizací"
# Výpis snapshotů
sudo snapper list
# Porovnání změn mezi snapshoty
sudo snapper diff 1..2
# Obnovení ze snapshotu
sudo snapper undochange 1..2
LVM snapshoty
Pokud používáte LVM (Logical Volume Manager), můžete vytvářet konzistentní snapshoty svazků. To je obzvláště užitečné pro zálohu databází a dalších aplikací, které vyžadují konzistentní stav dat.
# Vytvoření LVM snapshotu (10 GB prostoru pro změny)
sudo lvcreate -L 10G -s -n data-snapshot /dev/vg0/data
# Připojení snapshotu pro čtení
sudo mount -o ro /dev/vg0/data-snapshot /mnt/snapshot
# Záloha dat ze snapshotu (konzistentní stav)
rsync -avz /mnt/snapshot/ /mnt/backup/data/
# Odpojení a smazání snapshotu
sudo umount /mnt/snapshot
sudo lvremove /dev/vg0/data-snapshot
FLUSH TABLES WITH READ LOCK (MySQL/MariaDB) nebo pg_start_backup() (PostgreSQL), aby byla data na disku konzistentní. Po vytvoření snapshotu zámek ihned uvolněte.
Restic — moderní zálohovací nástroj
Restic je rychlý, bezpečný a efektivní zálohovací program napsaný v Go. Nabízí deduplikaci, šifrování a podporu mnoha úložišť. Podrobný popis najdete na restic.zalohujsi.cz.
# Inicializace repozitáře
restic init --repo /mnt/backup/restic-repo
# Záloha s vyloučením zbytečných souborů
restic -r /mnt/backup/restic-repo backup /home /etc \
--exclude='.cache' \
--exclude='node_modules' \
--tag "denni"
# Záloha do S3 (Amazon, MinIO, Wasabi)
export AWS_ACCESS_KEY_ID="vase-access-key"
export AWS_SECRET_ACCESS_KEY="vas-secret-key"
restic -r s3:s3.amazonaws.com/bucket-zalohy backup /home /etc
# Záloha přes SFTP
restic -r sftp:uzivatel@server:/backup/restic-repo backup /var/www
# Výpis snapshotů
restic -r /mnt/backup/restic-repo snapshots
# Obnova souborů
restic -r /mnt/backup/restic-repo restore latest --target /tmp/obnova
# Obnova konkrétního souboru
restic -r /mnt/backup/restic-repo restore latest \
--target /tmp/obnova --include "/etc/nginx/nginx.conf"
# Automatická údržba — smazání starých záloh
restic -r /mnt/backup/restic-repo forget \
--keep-daily 7 --keep-weekly 4 --keep-monthly 12 --prune
BorgBackup — deduplikace a komprese
BorgBackup (Borg) je pokročilý zálohovací nástroj zaměřený na deduplikaci a kompresi. Šetří místo tím, že ukládá každý datový blok pouze jednou. Podrobný popis najdete na borgbackup.zalohujsi.cz.
# Inicializace repozitáře (šifrovaného)
borg init --encryption=repokey /mnt/backup/borg-repo
# Záloha s kompresí
borg create --stats --progress --compression lz4 \
/mnt/backup/borg-repo::home-{now:%Y-%m-%d} /home
# Záloha na vzdálený server přes SSH
borg create --compression zstd,6 \
uzivatel@server:/backup/borg-repo::server-{now:%Y-%m-%d} \
/etc /var/www /home
# Výpis archivů
borg list /mnt/backup/borg-repo
# Obnovení archivu
borg extract /mnt/backup/borg-repo::home-2026-03-14
# Připojení archivu jako souborového systému (FUSE)
borg mount /mnt/backup/borg-repo::home-2026-03-14 /mnt/borg
# Automatická údržba
borg prune --keep-daily=7 --keep-weekly=4 --keep-monthly=6 \
/mnt/backup/borg-repo
borg compact /mnt/backup/borg-repo
Duplicati — zálohy do cloudu s GUI
Duplicati nabízí webové rozhraní a podporu 25+ cloudových služeb. Je ideální pro uživatele, kteří preferují grafické rozhraní. Podrobný popis najdete na duplicati.zalohujsi.cz.
# Instalace na Debian/Ubuntu
wget https://updates.duplicati.com/beta/duplicati_*.deb
sudo dpkg -i duplicati_*.deb
sudo apt -f install
# Spuštění webového rozhraní
duplicati-server --webservice-port=8200
# Příkazová řádka — záloha do S3
duplicati-cli backup "s3://bucket/zaloha" /home \
--s3-server-name=s3.amazonaws.com \
--aws_access_key_id=KLIC \
--aws_secret_access_key=TAJNY_KLIC \
--encryption-module=aes \
--passphrase="silne-heslo"
Bacula — enterprise zálohovací systém
Bacula je robustní zálohovací systém určený pro podnikové prostředí. Skládá se z několika komponent: Director (řízení), Storage Daemon (úložiště), File Daemon (klient) a Catalog (databáze metadata). Podrobný popis najdete na bacula.zalohujsi.cz.
Bacula je vhodná pro prostředí s desítkami až stovkami serverů, kde potřebujete centrální správu, páskové knihovny a podrobné reporty. Pro menší nasazení zvažte jednodušší alternativy.
Automatizace pomocí cron
Naplánování pravidelných záloh pomocí cronu je základ automatizace na Linuxu:
# Editace crontabu
crontab -e
# Denní záloha /home ve 2:00 ráno
0 2 * * * /usr/local/bin/zaloha-home.sh >> /var/log/zaloha.log 2>&1
# Týdenní úplná záloha v neděli v 1:00
0 1 * * 0 restic -r /mnt/backup/restic backup /home /etc --tag "tydenni"
# Měsíční záloha systému první den v měsíci
0 3 1 * * borg create /mnt/backup/borg::system-$(date +\%Y\%m) /etc /var
# Denní rotace starých záloh
0 4 * * * restic -r /mnt/backup/restic forget --keep-daily 7 --keep-weekly 4 --prune
Pro modernější alternativu ke cronu můžete použít systemd timery:
# /etc/systemd/system/zaloha.service
[Unit]
Description=Denní záloha dat
[Service]
Type=oneshot
ExecStart=/usr/local/bin/zaloha-home.sh
User=root
# /etc/systemd/system/zaloha.timer
[Unit]
Description=Spouští denní zálohu
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.target
# Aktivace timeru
sudo systemctl enable --now zaloha.timer
# Kontrola stavu
sudo systemctl status zaloha.timer
sudo systemctl list-timers
Souborové systémy a jejich vliv na zálohu
ext4
Nejrozšířenější linuxový souborový systém. Nemá nativní podporu snapshotů — pro konzistentní zálohy používejte LVM snapshoty nebo zálohovací nástroje s podporou VSS-like mechanismů (Restic, Borg pracují korektně i bez snapshotů díky konzistentnímu čtení).
btrfs
Moderní copy-on-write souborový systém s nativní podporou snapshotů, komprese a RAID. Ideální pro zálohy pomocí Timeshift nebo Snapper:
# Vytvoření snapshotu btrfs subvolume
sudo btrfs subvolume snapshot -r / /.snapshots/$(date +%Y%m%d)
# Odeslání snapshotu na jiný disk (inkrementální)
sudo btrfs send -p /.snapshots/predchozi /.snapshots/novy | \
sudo btrfs receive /mnt/backup/snapshots/
ZFS
ZFS nabízí nejpokročilejší snapshot a replikační funkce ze všech souborových systémů:
# Vytvoření snapshotu
sudo zfs snapshot pool/data@$(date +%Y%m%d)
# Odeslání snapshotu na vzdálený server
sudo zfs send pool/data@20260314 | ssh server sudo zfs receive backup/data
# Inkrementální replikace
sudo zfs send -i pool/data@20260313 pool/data@20260314 | \
ssh server sudo zfs receive backup/data
# Automatická rotace snapshotů
sudo zfs destroy pool/data@stary-snapshot
Strategie: server vs. desktop
Desktopové zálohy
- Použijte Timeshift pro systémové snapshoty (obnovení po nepovedené aktualizaci)
- Zálohujte /home pomocí Restic nebo BorgBackup na NAS nebo do cloudu
- Synchronizujte důležité dokumenty přes Nextcloud nebo Syncthing
- Nastavte automatickou zálohu přes cron nebo systemd timer
Serverové zálohy
- Zálohujte /etc (konfigurace), /var/www (web), /var/lib (databáze)
- Používejte LVM nebo ZFS snapshoty pro konzistentní zálohy databází
- Implementujte zálohu databází samostatně (mysqldump, pg_dump) — viz záloha databází
- Ukládejte zálohy na vzdálený server nebo do objektového úložiště (S3)
- Monitorujte zálohy pomocí skriptů nebo nástrojů jako Prometheus/Grafana
- Zvažte Bacula nebo Bareos pro centrální správu více serverů
Vzdálené zálohy přes SSH
SSH je standardní způsob zabezpečeného přenosu záloh mezi servery. Pro automatizaci používejte SSH klíče místo hesel:
# Vygenerování SSH klíče pouze pro zálohy
ssh-keygen -t ed25519 -f ~/.ssh/backup_key -C "zalohovaci-klic"
# Kopírování veřejného klíče na zálohovací server
ssh-copy-id -i ~/.ssh/backup_key.pub uzivatel@backup-server
# V authorized_keys na serveru můžete omezit příkazy:
# command="borg serve --restrict-to-path /backup",no-pty,no-agent-forwarding ssh-ed25519 AAAA... zalohovaci-klic
Srovnání zálohovacích nástrojů pro Linux
| Nástroj | Deduplikace | Šifrování | Cloud podpora | GUI | Licence |
|---|---|---|---|---|---|
| rsync | - | - (přes SSH) | - | - | GPL |
| Restic | Ano | AES-256 | S3, Azure, GCS, B2 | - | BSD |
| BorgBackup | Ano | AES-256 | - (SSH) | - (Vorta) | BSD |
| Duplicati | Ano | AES-256 | 25+ služeb | Webové | LGPL |
| Timeshift | - (hard linky) | - | - | GTK | GPL |
| Bacula | Ano | TLS | S3, Azure | Web (BAT) | AGPL |