Domovská » jak » Příručka pro začátečníky pro synchronizaci dat s nástrojem Rsync

    Příručka pro začátečníky pro synchronizaci dat s nástrojem Rsync

    Protokol rsync může být docela jednoduchý pro běžné zálohování / synchronizaci, ale některé z jeho pokročilejších funkcí vás mohou překvapit. V tomto článku ukážeme, jak mohou i největší držitelé dat a záložní nadšenci řídit rsync jako jediné řešení pro všechny jejich potřeby redundance dat.

    Upozornění: Pouze pokročilé

    Pokud sedíte tam, když přemýšlíte "Co je heck rsync?" Nebo "Používám pouze rsync pro opravdu jednoduché úkoly", můžete se podívat na náš předchozí článek o tom, jak používat rsync pro zálohování dat na Linuxu, což dává úvod do rsync, vás provede instalací a předvede své základní funkce. Jakmile budete mít pevné uchopení, jak používat rsync (upřímně, to není tak složité) a jsou pohodlné s terminálem Linux, jste připraveni přejít k tomuto pokročilému průvodce.

    Spuštění rsync v systému Windows

    Za prvé, dostaneme naše čtečky Windows na stejné stránce jako naši Linuxoví guruové. Přestože rsync je vytvořen tak, aby fungoval na systémech podobných systému Unix, není důvod, proč byste jej neměli používat stejně snadno ve Windows. Cygwin vytváří skvělé rozhraní Linux API, které můžeme použít pro spuštění rsync, a tak se přesuňte na své webové stránky a stáhněte si 32bitovou nebo 64bitovou verzi v závislosti na vašem počítači.

    Instalace je přímá; můžete ponechat všechny možnosti na výchozích hodnotách, dokud se nedostanete k obrazovce "Vybrat balíčky".

    Nyní musíte udělat stejné kroky pro Vim a SSH, ale balíčky budou vypadat trochu jinak, když jdete vybrat je, takže zde jsou některé screenshoty:

    Instalace Vim:

    Instalace SSH:

    Po výběru těchto tří balíků pokračujte kliknutím na tlačítko Další, dokud nedokončíte instalaci. Potom můžete Cygwin otevřít kliknutím na ikonu, kterou instalátor umístí na plochu.

    Příkazy rsync: Jednoduché až pokročilé

    Nyní, když uživatelé systému Windows jsou na stejné stránce, podívejme se na jednoduchý příkaz rsync a ukážeme, jak může použití některých pokročilých přepínačů rychle učinit složitým.

    Řekněme, že máte spoustu souborů, které je třeba zálohovat - kdo v těchto dnech nečiní? Připojíte přenosný pevný disk, abyste mohli zálohovat soubory počítače a vydat následující příkaz:

    rsync -a / home / geek / soubory / / mnt / usb / soubory /

    Nebo způsob, jak by vypadal v počítači se systémem Windows se společností Cygwin:

    rsync -a / cygdrive / c / soubory / / cygdrive / e / soubory /

    Docela jednoduché a v tomto okamžiku není potřeba rsync používat, protože byste mohli soubory přetahovat a pustit. Pokud však váš druhý pevný disk obsahuje některé soubory a potřebuje pouze aktualizované verze a soubory, které byly vytvořeny od poslední synchronizace, je tento příkaz užitečný, protože odesílá pouze nová data na pevný disk. S velkými soubory, a zejména přenosem souborů přes internet, je to velký problém.

    Zálohování souborů na externí pevný disk a udržení pevného disku na stejném místě jako v počítači je velmi špatný nápad, takže se podívejme na to, co by bylo zapotřebí, abyste začali posílat soubory přes internet do jiného počítače ( jeden, který jste si pronajal, člena rodiny atd.).

    rsync -av --delete -e 'ssh -p 12345' / home / geek / soubory / [email protected]: / home / geek2 /

    Výše uvedený příkaz pošle vaše soubory do jiného počítače s adresou IP 10.1.1.1. Bylo by smazáno cizí soubory z cílového místa, které již neexistují ve zdrojovém adresáři, vysílat převáděné názvy souborů, takže máte představu o tom, co se děje, a tunel rsync přes SSH na portu 12345.

    The -a -v -e - oddělit přepínače jsou některé z nejzákladnějších a běžně používaných; měli byste již o nich vědět hodně, pokud čtete tento tutoriál. Pojďme se podívat na některé další přepínače, které jsou někdy ignorovány, ale neuvěřitelně užitečné:

    --pokrok - Tento přepínač nám umožňuje zobrazit průběh přenosu každého souboru. Je to obzvláště užitečné při přenosu velkých souborů přes internet, ale může produkovat nesmyslné množství informací při přenosu malých souborů přes rychlou síť.

    Příkaz rsync s příkazem --pokrok přepnout jako záloha:

    --částečný - Jedná se o další přepínač, který je obzvláště užitečný při přenosu velkých souborů přes internet. Pokud je rsync přerušen z jakéhokoli důvodu uprostřed přenosu souborů, částečně přenesený soubor je uložen v cílovém adresáři a přenos pokračuje tam, kde se vypne po opětovném spuštění příkazu rsync. Při přenosu velkých souborů přes internet (řekněme několik gigabajtů) není nic horšího, než jen několik sekund internetového výpadku, modré obrazovky nebo chyby člověka, které způsobí, že se váš soubor přenese a začne znovu znovu.

    -P - tento přepínač kombinuje --pokrok a --částečný, tak ji použijte místo toho a váš příkaz rsync bude trochu lepší.

    -z nebo --komprimovat - Tímto přepínačem bude rsync komprimovat data souboru při jeho přenášení, což snižuje množství dat, která musí být odeslána do cíle. Je to vlastně poměrně běžný přepínač, ale není daleko od podstatné, ale opravdu tě těží z přenosů mezi pomalými připojeními a nedělá nic pro následující typy souborů: 7z, avi, bz2, deb, g, z iso, jpeg, jpg, mov, mp3, mp4, ogg, rpm, tbz, tgz, z, zip.

    -h nebo --lidsky čitelný - Pokud používáte --pokrok přepínač, určitě budete chtít použít i tento. To znamená, že pokud nechcete převést bajty na megabajty za letu. The -h přepínač převede všechna vyvedená čísla na formát čitelný pro člověka, takže můžete skutečně rozumět množství přenášených dat.

    -n nebo --suché běh - Tento přepínač je nezbytný k tomu, abyste věděli, kdy nejprve píšete váš rsync skript a vyzkoušíte jej. Provádí zkušební provoz, ale ve skutečnosti nezmění - budoucí změny se stále vyskytují jako normální, takže si můžete přečíst vše a ujistěte se, že to vypadá dobře, než začne skript do výroby.

    -R nebo --relativní - Tento přepínač musí být použit, pokud cílový adresář ještě neexistuje. Tuto možnost použijeme později v této příručce, abychom mohli v adresáři vytvořit adresáře na cílovém počítači s časovými razítky.

    --vyloučit - Tento přepínač slouží k odkazu na seznam vyloučení, který obsahuje adresářové cesty, které nechcete zálohovat. Potřebuje prostý textový soubor s adresářem nebo cestou souboru na každém řádku.

    --přidat-od - Podobný --vyloučit, ale odkazuje na soubor, který obsahuje adresáře a cesty souborů dat, které chcete zálohovat.

    --statistiky - Není to opravdu důležitý přepínač v žádném případě, ale pokud jste sysadmin, může být užitečné znát podrobné statistiky každé zálohy, právě proto, abyste mohli monitorovat množství přenosu odesílané přes vaši síť a takové.

    --log soubor - To umožňuje odeslat výstup rsync do souboru protokolu. Určitě to doporučujeme pro automatické zálohování, v němž nejste tam, abyste si sami přečetli výstup. Vždy ukládejte soubory protokolu jednou ve svém volném čase, abyste se ujistili, že vše funguje správně. Také je rozhodujícím přepínačem pro použití sysadminu, takže se nezamlouváte, jak vaše zálohy selhaly, když jste opustili stážistu.

    Podívejme se na náš příkaz rsync, když přidáme několik dalších přepínačů:

    rsync -avzhP --delete --staty --log-file = / home / geek / rsynclogs / backup.log --exclude-z '/home/geek/exclude.txt' -e 'ssh -p 12345' / home / geek / soubory / [email protected]: / home / geek2 / soubory /

    Příkaz je stále velmi jednoduchý, ale stále jsme nevytvořili slušné řešení zálohování. I když jsou naše soubory nyní ve dvou různých fyzických místech, tato záloha nečiní nic, co nás chrání před jednou z hlavních příčin ztráty dat: lidská chyba.

    Zálohování snímků

    Pokud omylem odstraníte nějaký soubor, virus poškodí některý z vašich souborů nebo se stane něco jiného, ​​při kterém jsou vaše soubory nežádoucím způsobem změněny, a pak spustíte skript rsync zálohování, záložní data jsou přepsána nežádoucími změnami. Když k takovému problému dojde (ne pokud, ale kdy), vaše řešení zálohování nic nedělo, abyste vás ochránili před ztrátou dat.

    Tvůrce rsync to pochopil a přidal --zálohování a --backup-dir argumenty, takže uživatelé mohou spouštět rozdílné zálohy. První příklad na webu rsync zobrazuje skript, kde se každých sedm dní spustí plná záloha a změny v těchto souborech jsou denně zálohovány v samostatných adresářích. Problém s touto metodou je, že k obnovení souborů je nutné je efektivně obnovit sedm různých časů. Kromě toho většina geeků provádí zálohování několikrát denně, takže můžete mít v každém okamžiku snad 20 nebo více různých adresářů záloh. Nejen, že se vaše soubory nyní zotavují, ale dokonce i prohlížení vašich zálohovaných dat může být velmi časově náročné - budete muset vědět, kdy byl soubor naposledy změněn, abyste našli jeho nejaktuálnější zálohu. Navíc je neúspěšné provozovat pouze přírůstkové zálohy týdně (nebo dokonce méně často v některých případech).

    Snapshot záloh na záchranu! Zálohování snímků nejsou nic víc než přírůstkové zálohy, ale využívají hardlinky k zachování struktury souborů původního zdroje. To může být těžké zabalit hlavu zpočátku, tak se podívejme na příklad.

    Předpokládejme, že máme spuštěný zálohovací skript, který automaticky zálohuje data každé dvě hodiny. Kdykoli to rsync provede, označuje každou zálohu ve formátu: Zálohování - měsíc - den - rok.

    Takže na konci typického dne bychom měli mít seznam adresářů v našem cílovém adresáři takto:

    Při překročení některého z těchto adresářů byste viděli každý soubor ze zdrojového adresáře přesně tak, jak tomu bylo v té době. Přesto by neexistovaly žádné duplikáty ve všech dvou adresářích. rsync to uskutečňuje pomocí hardlinkingu přes --odkaz-dest = DIR argument.

    Samozřejmě, abychom měli tyto pěkně a čistě datované adresářové jména, budeme muset trochu posílit náš skript rsync. Podívejme se na to, co by bylo zapotřebí k vytvoření takového zálohovacího řešení, a pak podrobněji vysvětlíme tento scénář:

    #! / bin / bash

    #copy starý čas.txt na čas2.txt

    ano | cp ~ / backup / time.txt ~ / backup / time2.txt

    #overwrite starý soubor time.txt s novým časem

    echo 'datum + "% F-% I% p"'> ~ / backup / time.txt

    #make soubor protokolu

    echo ""> ~ / backup / rsync-byat + "% F-% I% p" '

    #rsync příkaz

    rsync -avzhPR - chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r --delete --stats --log-file = p "'log -exclude-from' ~ / exclude.txt '- link-dest = / home / geek2 / files /' cat ~ / backup / time2.txt '-e' ssh -p 12345 '/ home / geek / files / [email protected]: / home / geek2 / soubory / 'datum +'% F-% I% p '

    # nezapomeňte načtení souboru protokolu a vložte jej do zálohy

    scp -P 12345 ~ / backup / rsync-'cat ~ / backup / time.txt'.log [email protected]: / home / geek2 / soubory / 'cat ~ / backup / time.txt' / rsync -cat ~ / backup / time.txt'.log

    To by byl typický skript rsync skriptu. V případě, že jste někde přišli o nás,

    První řádek našeho skriptu zkopíruje obsah souboru time.txt do souboru time2.txt. Zaškrtávací políčko yes potvrzuje, že chceme soubor přepsat. Dále převezmeme aktuální čas a vložíme jej do souboru time.txt. Tyto soubory budou užitečné později.

    Následující řádek vytvoří soubor protokolu rsync a pojmenuje jej rsync-date.log (kde je datum a čas).

    Nyní, komplexní příkaz rsync, o kterém jsme vás varovali:

    -avzhPR, -e, --delete, --stats, --log -soubor, -exclude-from, -link-dest - Jen přepínače, o kterých jsme hovořili dříve; posuňte nahoru, pokud potřebujete aktualizaci.

    --chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r - Toto jsou oprávnění pro cílový adresář. Vzhledem k tomu, že děláme tento adresář uprostřed našeho rsync skriptu, musíme zadat oprávnění tak, aby si jej uživatel mohl psát soubory.

    Použití příkazů datum a mačka

    Přejdeme každým použitím příkazu datum a mačka uvnitř příkazu rsync v pořadí, v jakém se vyskytují. Poznámka: Jsme si vědomi, že existují i ​​další způsoby, jak tuto funkci dosáhnout, zejména s použitím prohlášení o proměnných, ale pro účely této příručky jsme se rozhodli použít tuto metodu.

    Soubor protokolu je určen jako:

    ~ / backup / rsync-byte + "% F-% I% p" '

    Jinak bychom ji mohli specifikovat jako:

    ~ / backup / rsync-'cat ~ / backup / time.txt'.log

    Ať tak či onak, --log soubor příkazu by měl být schopen najít dříve vytvořený datový soubor s datem a zapsat jej.

    Soubor cílového odkazu je určen jako:

    --link-dest = / home / geek2 / soubory / 'cat ~ / backup / time2.txt'

    To znamená, že --link-dest příkaz je uveden adresář předchozí zálohy. Pokud běžíme zálohování každé dvě hodiny, a to je v 16:00 v době, kdy jsme spustili tento skript, pak --link-dest příkaz vyhledá adresář vytvořený ve 14:00 a přenáší pouze data, která se od té doby změnila (pokud existují).

    Chcete-li znovu zopakovat, proto je čas.txt zkopírován na čas2.txt na začátku skriptu, takže --link-dest příkaz může tento čas později odkazovat.

    Adresář cílů je určen jako:

    [email protected]: / home / geek2 / soubory / 'datum +'% F-% I% p ''

    Tento příkaz prostě položí zdrojové soubory do adresáře, který má název aktuálního data a času.

    Konečně se ujistíme, že je do zálohy umístěna kopie souboru protokolu.

    scp -P 12345 ~ / backup / rsync-'cat ~ / backup / time.txt'.log [email protected]: / home / geek2 / soubory / 'cat ~ / backup / time.txt' / rsync -cat ~ / backup / time.txt'.log

    Používáme zabezpečenou kopii na portu 12345, abychom si vzali protokol rsync a umístili jej do správného adresáře. Chcete-li vybrat správný soubor protokolu a ujistit se, že skončí na správném místě, soubor time.txt musí být odkazován pomocí příkazu cat. Pokud se divíte, proč jsme se rozhodli zkracovat čas.txt místo toho, že použijeme příkaz datum, je to proto, že při spuštění příkazu rsync se mohlo stát spousta času, abychom se ujistili, že máme správný čas, textový dokument, který jsme vytvořili dříve.

    Automatizace

    Použijte Cron na Linuxu nebo Plánovač úloh v systému Windows pro automatizaci skriptu rsync. Jedna věc, na kterou musíte být opatrná, je ujistit se, že ukončíte všechny běžné procesy rsync, než budete pokračovat v nové. Zdá se, že Plánovač úloh automaticky ukončí všechny již spuštěné instance, ale pro Linux budete muset být trochu kreativnější.

    Většina distribucí Linuxu může používat příkaz pkill, proto se nezapomeňte přidat následující informace na začátek skriptu rsync:

    pkill -9 rsync

    Šifrování

    Ne, ještě nejsme hotovi. Nakonec máme fantastické (a zdarma!) Řešení zálohování, ale všechny naše soubory jsou stále náchylné k krádeži. Doufejme, že zálohujete soubory na nějaké místo vzdálené stovky kilometrů. Bez ohledu na to, jak bezpečné je to vzdálené místo, může být krádež a hacking vždy problém.

    V našich příkladech jsme tunelovali celou naši službu rsync přes SSH, což znamená, že všechny naše soubory jsou zašifrovány při přepravě do místa určení. Musíme se však ujistit, že cíl je stejně bezpečný. Mějte na paměti, že rsync šifruje vaše data pouze při jejich přenášení, ale soubory jsou po otevření cílového místa otevřené.

    Jednou z nejlepších vlastností rsync je to, že přenáší změny pouze v každém souboru. Pokud máte všechny soubory šifrované a provedete jednu malou změnu, celý soubor bude muset být znovu vyslán jako výsledek šifrování zcela randomizovat všechna data po jakékoli změně.

    Z tohoto důvodu je nejlepší / nejjednodušší použít určitý typ šifrování disku, například BitLocker pro Windows nebo dm-crypt for Linux. Tímto způsobem jsou vaše data chráněna v případě krádeže, ale soubory mohou být přenášeny pomocí rsync a vaše šifrování nebude bránit jeho výkonu. Existují i ​​další možnosti, které fungují podobně jako rsync nebo dokonce implementují nějakou formu, jako je Duplicity, ale postrádají některé funkce, které rsync nabízí.

    Poté, co nastavíte zálohy snímků na místě mimo provoz a šifrujete zdrojové a cílové pevné disky, udělejte si paty na zádech pro zvládnutí rsync a implementujte nejdokonalejší řešení pro zálohování dat.