Kompletní průvodce zálohováním Linuxu

Od jednoduchého rsync po pokročilé snapshotování s BorgBackup — vše o zálohování linuxových desktopů, serverů a kontejnerů.

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/
Tip: Důležité přepínače rsync -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
Nebezpečí: dd nezná odpuštění Příkaz 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é
Timeshift zálohuje jen systém Timeshift je navržen pro zálohu systémových souborů, nikoli uživatelských dat v /home. Pro zálohu uživatelských dat používejte rsync, BorgBackup nebo jinou metodu. Toto rozdělení je záměrné — systém obnovíte Timeshiftem, uživatelská data jinou cestou.

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
Tip: LVM snapshoty pro databáze Před vytvořením LVM snapshotu zavolejte 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ů
Tip: Infrastruktura jako kód Pokud používáte Ansible, Puppet, Terraform nebo Docker, vaše infrastruktura je definována kódem. Zálohujte tento kód (nejlépe v Git repozitáři) a v případě havárie můžete celý server rychle znovu nasadit. Přesto nezapomínejte zálohovat data, která kód neobsahuje (databáze, uživatelská data, certifikáty).

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
Podrobné recenze Pro detailní porovnání funkcí, výkonu a cen jednotlivých nástrojů navštivte naše srovnání zálohovacích programů nebo si přečtěte individuální recenze na subdoménách — například restic.zalohujsi.cz nebo borgbackup.zalohujsi.cz.