GNU/Linux >> Znalost Linux >  >> Linux

Jak používat pokročilý rsync pro velké zálohy Linuxu

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.


Linux
  1. Jak používám cron v Linuxu

  2. Jak používat příkaz Linux Rsync (vzdálená synchronizace).

  3. Jak používat rsync z Windows PC na vzdálený Linux server?

  1. Rockově stabilní souborový systém pro velké soubory (zálohy) pro linux

  2. Linuxový zálohovací nástroj pro přírůstkové zálohování

  3. Jak mohu použít rsync se systémem souborů FAT?

  1. Jak používat systemd-nspawn pro obnovu systému Linux

  2. Jak používat Rsync k synchronizaci nových nebo změněných/upravených souborů v Linuxu

  3. Jak používat Su Command v Linuxu