Zálohování Složky /home v Linuxu: Efektivní Přístup
V předchozím článku jsem se podrobněji zaměřil na zálohování systémového souborového systému v Linuxu. Dnes se stručně podíváme na to, jak jednoduše zálohovat složku /home.
Program TimeShift, který byl zmíněn dříve, automaticky nezálohuje složku /home. Tento program se soustředí na systémové části souborového systému a záměrně tuto uživatelskou složku vynechává. Samozřejmě, je možné toto chování změnit v nastavení filtrů, avšak dnes se zaměříme na individuální zálohování složky /home, které může být pro mnoho uživatelů vhodnější.
Složka /home v Linuxu obsahuje vše, co souvisí s individuálním nastavením uživatele. Zde se ukládají dokumenty, videa, obrázky a hudba, stejně jako specifická nastavení aplikací, přístupové klíče a další důležitá data. Zálohování této složky může být prováděno individuálně a častěji než samotného systému, například každý večer.
Pro zálohování složky /home na mém produkčním zařízení používám následující jednoduchý shellový skript, který si podrobněji vysvětlíme.
#!/bin/bash
echo ",./"
echo "Zálohování zahájeno: $(date)"
rsync -a \
--exclude '.cache/*' \
--exclude 'Cache/*' \
--exclude 'cache/*' \
--exclude 'Android/Sdk/*' \
--exclude 'GPUCache/*' \
--exclude 'GrShaderCache/*' \
--exclude 'GraphiteDawnCache/*' \
--exclude 'DawnGraphiteCache/*' \
--exclude 'ShaderCache/*' \
--exclude 'component_crx_cache/*' \
--exclude 'Stažené' \
--exclude 'temp' \
-e 'ssh -p 7922' \
/home/ \
backupagent@192.168.79.11:/volume1/NetBackup/kubuntu/home/
echo
echo "Velikost zálohy:"
ssh -p 7922 backupagent@192.168.79.11 "du -sh /volume1/NetBackup/kubuntu/home/"
echo
echo "Dostupné místo na NAS:"
ssh -p 7922 backupagent@192.168.79.11 "df -h"
echo
echo "Zálohování dokončeno: $(date)"
echo "/.,"
Tento skript pomocí příkazu rsync -a
synchronizuje složku /home do vzdáleného cílového umístění /volume1/NetBackup/kubuntu/home/
, přičemž v cílovém umístění nikdy nemaže soubory, které byly odstraněny v lokálním umístění.
To znamená, že v cílovém umístění se neustále "hromadí" nové soubory a stávající soubory se přepisují v případě, že došlo ke změně atributů souboru. V podstatě se jedná o jednosměrnou synchronizaci, která uchovává odstraněné soubory v cílovém úložišti, což je právě to, co od tohoto řešení očekáváme.
Pokud byste preferovali přesnou 1:1 synchronizaci, můžete jednoduše přidat přepínač --delete
k příkazu rsync
. Tím by skript vypadal takto: rsync -a --delete ... pokračování skriptu ...
Při archivaci pomocí rsync
se kontroluje existence souborů a jejich změny tak, že se porovnávají atributy souborů mezi zdrojovým a cílovým umístěním. Existují tři hlavní způsoby, jak rsync
zjistí, zda je soubor změněn nebo již existuje:
- Podle času poslední modifikace a velikosti (výchozí chování):
rsync
zkontroluje, zda se čas poslední změny a velikost souboru na zdrojovém a cílovém umístění shodují. Pokud jsou stejné, předpokládá se, že soubor se nezměnil, a není přepsán. - Pomocí kontrolního součtu (
--checksum
): Pokud použijete přepínač--checksum
,rsync
bude vypočítávat kontrolní součet pro každý soubor na obou stranách a porovnávat je. Tento přístup je přesnější, ale výrazně pomalejší, protože kontrolní součet se musí počítat pro každý soubor. - Kombinace času a velikosti s kontrolním součtem: V některých případech můžete použít
rsync
tak, aby nejprve porovnával čas a velikost (rychlejší kontrola), a pak jen pro podezřelé soubory přidal kontrolu součtem, což je méně výpočetně náročné.
Pro archivaci se typicky používá první varianta, jelikož je rychlá a poskytuje dostatečnou přesnost pro většinu případů.
Automatizace Zálohování
Jak spouštět tento skript pravidelně, například každé pondělí a středu?
Spusťte příkaz:
sudo crontab -e
A přidejte následující řádek:
5 0 * * 1,3 /home/tomas/projects/bash/rsync_backups/home_backup.sh >> /var/log/rsync_backups.log 2>&1
Co je Cron Démon?
Cron démon je služba, která automaticky spouští naplánované úlohy v určený čas. Časová specifikace se udává pomocí řetězce na začátku příkazu, který si můžete ověřit na různých online nástrojích.
Příkaz sudo crontab -e
otevře editor pro definici úloh pro systémového uživatele root. V tomto případě jsem naplánoval spuštění skriptu home_backup.sh
, jehož výstup je přesměrován do logovacího souboru pro pozdější kontrolu.
Tato definice zajistí, že skript bude spuštěn každý den, pět minut po půlnoci v pondělí a ve středu. To umožňuje pravidelné zálohování, pokud je zařízení připojeno k síti. V případě potřeby zálohování mimo kancelář může být užitečná firemní VPN, která zajistí trvalou dostupnost interní sítě.
Doufám, že tento článek přispěje k lepšímu pochopení procesu individuálního zálohování složek v Linuxu.