Zdá se jasné, že zálohování je ve světě Linuxu vždy horkým tématem. V roce 2017 nabídl David Both čtenářům Opensource.com tipy na téma „Použití rsync k zálohování vašeho systému Linux“ a na začátku tohoto roku zveřejnil průzkum, v němž se nás zeptal:„Jaká je vaše primární strategie zálohování pro adresář /home v Linuxu? " V dalším letošním průzkumu se Don Watkins zeptal:„Jaké řešení zálohování s otevřeným zdrojovým kódem používáte?“
Moje odpověď je rsync. Moc se mi líbí rsync! Na trhu je spousta velkých a složitých nástrojů, které mohou být nezbytné pro správu páskových jednotek nebo zařízení s knihovnou úložiště, ale může být vše, co potřebujete, jednoduchý open source nástroj příkazového řádku.
Základní rsync
Spravoval jsem systém binárního úložiště pro globální organizaci, která měla zhruba 35 000 vývojářů s několika terabajty souborů. Pravidelně jsem přesouval nebo archivoval stovky gigabajtů dat najednou. Byl použit Rsync. Tato zkušenost mi dala důvěru v tento jednoduchý nástroj. (Takže ano, používám ho doma k zálohování svých systémů Linux.)
Základní příkaz rsync je jednoduchý.
rsync -av SRC DST
Příkazy rsync vyučované v jakémkoli tutoriálu budou ve většině obecných situací fungovat dobře. Předpokládejme však, že potřebujeme zálohovat velmi velké množství dat. Něco jako adresář s 2 000 podadresáři, z nichž každý obsahuje 50 GB až 700 GB dat. Spuštění rsync v tomto adresáři může zabrat ohromné množství času, zvláště pokud používáte volbu kontrolního součtu, kterou preferuji.
Pokud se pokusíme synchronizovat velké množství dat nebo synchronizovat přes pomalá síťová připojení, pravděpodobně to utrpí výkon. Dovolte mi ukázat vám některé metody, které používám k zajištění dobrého výkonu a spolehlivosti.
Pokročilý rsync
Další zdroje pro Linux
- Cheat pro příkazy Linuxu
- Cheat sheet pro pokročilé příkazy systému Linux
- Bezplatný online kurz:Technický přehled RHEL
- Síťový cheat pro Linux
- Cheat sheet SELinux
- Cheat pro běžné příkazy pro Linux
- Co jsou kontejnery systému Linux?
- Naše nejnovější články o Linuxu
Jeden z prvních řádků, který se objeví při spuštění rsync, je:"odesílání přírůstkového seznamu souborů." Pokud budete hledat tento řádek, uvidíte mnoho otázek s otázkami jako:proč to trvá věčnost? nebo proč se zdá, že zavěšuje?
Zde je příklad založený na tomto scénáři. Řekněme, že máme adresář s názvem /storage které chceme zálohovat na externí USB zařízení připojené na /media/WDPassport .
Pokud chceme zálohovat /storage na USB externí disk, můžeme použít tento příkaz:
rsync -cav /storage /media/WDPassport
c volba říká rsync, aby použil kontrolní součty souborů místo časových razítek k určení změněných souborů, a to obvykle trvá déle. Aby bylo možné rozebrat /storage adresář, synchronizuji podle podadresáře pomocí najít příkaz. Zde je příklad:
find /storage -type d -exec rsync -cav {} /media/WDPassport \;
Vypadá to dobře, ale pokud jsou v /storage nějaké soubory adresáře, nebudou zkopírovány. Jak tedy můžeme synchronizovat soubory v /storage ? Existuje také malá nuance, kdy určité možnosti způsobí, že rsync synchronizuje . adresář, což je kořen zdrojového adresáře; to znamená, že bude synchronizovat podadresáře dvakrát, a to nechceme.
Zkrátka, řešením, na kterém jsem se rozhodl, je „dvojitý přírůstkový“ scénář. To mi umožňuje rozdělit adresář, například rozdělením /home do domovských adresářů jednotlivých uživatelů nebo v případech, kdy máte více velkých adresářů, jako je hudba nebo rodinné fotografie.
Zde je příklad mého skriptu:
HOMES="alan"
DRIVE="/media/WDPassport"
for HOME in $HOMES; do
cd /home/$HOME
rsync -cdlptgov --delete . /$DRIVE/$HOME
find . -maxdepth 1 -type d -not -name "." -exec rsync -crlptgov --delete {} /$DRIVE/$HOME \;
done
První příkaz rsync zkopíruje soubory a adresáře, které najde ve zdrojovém adresáři. Ponechává však adresáře prázdné, takže je můžeme iterovat pomocí find příkaz. To se provádí předáním d argument, který říká rsync, aby nevracel adresář.
-d, --dirs transfer directories without recursing
Najít příkaz pak předá každý adresář do rsync jednotlivě. Rsync poté zkopíruje obsah adresářů. To se provádí předáním r argument, který říká rsync, aby rekurzoval adresář.
-r, --recursive recurse into directories
To udržuje přírůstkový soubor, který rsync používá, na zvládnutelné velikosti.
Většina výukových programů rsync používá a (nebo archivovat ) argument pro pohodlí. Toto je ve skutečnosti složený argument.
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
Ostatní argumenty, které předám, by byly zahrnuty do a; to jsou l , p , t , g a o .
-l, --links copy symlinks as symlinks
-p, --perms preserve permissions
-t, --times preserve modification times
-g, --group preserve group
-o, --owner preserve owner (super-user only)
--smazat volba říká rsync, aby odstranil všechny soubory v cíli, které již ve zdroji neexistují. Tímto způsobem je výsledkem přesná duplikace. Můžete také přidat vyloučení pro .Trash adresáře nebo třeba .DS_Store soubory vytvořené systémem MacOS.
-not -name ".Trash*" -not -name ".DS_Store"
Buďte opatrní
Jedno doporučení na závěr:rsync může být destruktivní příkaz. Naštěstí jeho přemýšliví tvůrci poskytli schopnost dělat „suché běhy“. Pokud zahrneme n rsync zobrazí očekávaný výstup bez zápisu jakýchkoli dat.
rsync -cdlptgovn --delete . /$DRIVE/$HOME
Tento skript je škálovatelný na velmi velké velikosti úložiště a na situace s velkou latencí nebo pomalým připojením. Jsem si jistý, že je stále co zlepšovat, jako vždy. Pokud máte návrhy, podělte se o ně v komentářích.