Úvodná » ako » Príručka pre začiatočníkov na synchronizáciu údajov s programom Rsync

    Príručka pre začiatočníkov na synchronizáciu údajov s programom Rsync

    Protokol rsync môže byť dosť jednoduchý na bežné zálohovanie / synchronizáciu, ale niektoré jeho pokročilejšie funkcie vás môžu prekvapiť. V tomto článku ukážeme, ako aj najväčší držitelia dát a záložní nadšenci môžu rsync využívať ako jediné riešenie pre všetky svoje potreby na redundanciu údajov.

    Upozornenie: Iba pokročilé

    Ak sedíte tam, keď si myslíte "Čo je to heck rsync?" Alebo "Používam rsync iba pre veľmi jednoduché úlohy", možno by ste si chceli pozrieť náš predchádzajúci článok o tom, ako použiť rsync na zálohovanie vašich dát na Linuxe, úvod do rsync vás prevedie inštaláciou a zobrazuje základné funkcie. Akonáhle budete mať pevné uchopenie, ako používať rsync (úprimne, nie je to tak zložité) a sú pohodlné s terminálom Linux, ste pripravení prejsť na tohto pokročilého sprievodcu.

    Spúšťanie rsync v systéme Windows

    Po prvé, dostaneme naše čítače Windows na rovnakej stránke ako naši Linuxoví guru. Hoci rsync je zostrojený tak, aby fungoval na systémoch podobných systému Unix, nie je dôvod, aby ste ho nemohli používať rovnako ľahko v systéme Windows. Cygwin prináša nádherné rozhranie Linux API, ktoré môžeme použiť na spustenie rsync, a tak v závislosti od vášho počítača prejdite na svoje webové stránky a prevezmite 32-bitovú alebo 64-bitovú verziu.

    Inštalácia je jednoduchá; môžete mať všetky predvolené hodnoty, kým sa nedostanete na obrazovku "Vybrať balíky".

    Teraz musíte urobiť rovnaké kroky pre Vim a SSH, ale balíky budú vyzerať trochu inak, keď ich vyberiete, takže tu sú niektoré screenshoty:

    Inštalácia Vim:

    Inštalácia SSH:

    Po vybratí týchto troch balíčkov pokračujte kliknutím na tlačidlo Ďalej, kým nedokončíte inštaláciu. Potom môžete Cygwin otvoriť kliknutím na ikonu, ktorú inštalátor umiestnil na pracovnú plochu.

    rsync Príkazy: Jednoduché až Pokročilé

    Teraz, keď sa používatelia systému Windows nachádzajú na rovnakej stránke, pozrite sa na jednoduchý príkaz rsync a ukážte, ako môže použitie niektorých pokročilých prepínačov rýchlo zložité.

    Povedzme, že máte veľa súborov, ktoré je potrebné zálohovať - ​​kto v týchto dňoch nie je? Pripojte prenosný pevný disk, aby ste mohli zálohovať súbory vášho počítača a vydajte nasledujúci príkaz:

    rsync -a / home / geek / súbory / / mnt / usb / súbory /

    Alebo ako by to vyzeralo v počítači so systémom Windows s programom Cygwin:

    rsync -a / cygdrive / c / súbory / / cygdrive / e / súbory /

    Docela jednoduché a v tom okamihu naozaj nie je potrebné používať rsync, pretože by ste mohli jednoducho pretiahnuť súbory. Ak však váš iný pevný disk obsahuje niektoré súbory a potrebuje iba aktualizované verzie a súbory, ktoré boli vytvorené od poslednej synchronizácie, je tento príkaz vhodný, pretože odosiela nové dáta iba na pevný disk. S veľkými súbormi a predovšetkým prenosom súborov cez internet je to veľký problém.

    Zálohovanie súborov na externý pevný disk a udržanie pevného disku na rovnakom mieste, ako je váš počítač, je veľmi zlý nápad, a tak sa pozrime na to, čo by bolo potrebné začať odosielať súbory cez internet do iného počítača ( jeden si prenajal, člen rodiny, atď).

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

    Vyššie uvedený príkaz zašle vaše súbory do iného počítača s IP adresou 10.1.1.1. Bolo by to odstrániť cudzie súbory z cieľa, ktorý už neexistuje v zdrojovom adresári, výstupné premenované súbory, takže máte predstavu o tom, čo sa deje, a tunel rsync cez SSH na portu 12345.

    -a -v -e - odstrániť prepínače sú niektoré z najzákladnejších a bežne používaných; mali by ste už o nich vedieť, ak čítate tento návod. Poďme prejsť niektoré ďalšie prepínače, ktoré sú niekedy ignorované, ale neuveriteľne užitočné:

    --pokrok - Tento prepínač umožňuje zobraziť postup prenosu každého súboru. Je to obzvlášť užitočné pri prenose veľkých súborov cez internet, ale môže produkovať nezmyselné množstvo informácií pri prenose malých súborov cez rýchlu sieť.

    Príkaz rsync s príkazom --pokrok prepnúť ako záloha:

    --čiastočný - Toto je ďalší prepínač, ktorý je obzvlášť užitočný pri prenose veľkých súborov cez internet. Ak sa rsync preruší z akéhokoľvek dôvodu uprostred prenosu súboru, čiastočne prenášaný súbor sa uchová v cieľovom adresári a prechod sa obnoví tam, kde sa vypne po opätovnom spustení príkazu rsync. Pri prenose veľkých súborov cez internet (povedzme niekoľko gigabajtov), ​​nie je nič horšie ako mať niekoľko sekúnd internetový výpadok, modrá obrazovka alebo ľudská chyba zapríčiniť prenos súborov a musieť začať znova.

    -P - tento prepínač spája --pokrok a --čiastočný, tak použite namiesto toho a urobí to príkaz rsync trochu lepšie.

    -z alebo --komprimovať - Týmto prepínačom sa dá súbor rsync komprimovať pri prenose, čo znižuje množstvo dát, ktoré sa majú odoslať do cieľa. Je to vlastne pomerne bežný prepínač, ale zďaleka nie je podstatný, ale naozaj vás bude ťažiť z prenosov medzi pomalými pripojeniami a nič pre nasledujúce typy súborov: 7z, avi, bz2, deb, g, z iso, jpeg, jpg, mov, mp3, mp4, ogg, rpm, tbz, tgz, z, zip.

    -hod alebo --čitateľné - Ak používate --pokrok prepínač, budete určite chcieť použiť aj tento. To znamená, že ak nechcete konvertovať bajty na megabajty za behu. -hod prepínač prevádza všetky výstupné čísla na ľudsky čitateľný formát, takže môžete skutočne zmysluplné množstvo prenesených dát.

    -n alebo --chodu nasucho - Tento prepínač je nevyhnutný na to, aby ste vedeli, kedy prvýkrát píšete svoj rsync skript a vyskúšate ho. Vykonáva skúšobnú prevádzku, ale v skutočnosti nevykonáva žiadne zmeny - budúce zmeny sa stále zobrazujú ako normálne, takže si môžete prečítať všetko a uistite sa, že to vyzerá v poriadku skôr, než začnete skript do výroby.

    -R alebo --relatívna - Tento prepínač sa musí použiť, ak cieľový adresár ešte neexistuje. Túto možnosť použijeme neskôr v tejto príručke, aby sme mohli adresáre na cieľovom počítači s názvami priečinkov obsahovať časové značky.

    --vylúčiť, ze - Tento prepínač sa používa na prepojenie na zoznam vylúčených stránok, ktorý obsahuje cesty adresárov, ktoré nechcete zálohovať. Potrebuje jednoduchý textový súbor s adresárom alebo cestou súboru na každom riadku.

    --zahŕňajú, z - Podobný --vylúčiť, ze, ale odkazuje na súbor, ktorý obsahuje adresáre a cesty súborov dát, ktoré chcete zálohovať.

    --štatistiky - V skutočnosti nie je dôležitým prepínačom akýmkoľvek spôsobom, ale ak ste sysadmin, môže byť užitočné poznať podrobné štatistiky každej zálohy, len aby ste mohli monitorovať množstvo prenosu, ktoré sa odosiela cez vašu sieť a také.

    --log-file - To vám umožní poslať výstup rsync do súboru denníka. Rozhodne sme to odporučili pre automatizované zálohy, v ktorých nie ste tam, aby ste si sami prečítali výstup. Vždy dajte súbor denníka raz vo voľnom čase, aby ste sa uistili, že všetko funguje správne. Tiež je to dôležitý prepínač pre používanie sysadminu, takže sa nerozmýšľate nad tým, ako sa vaše zálohy zlyhali, keď ste opustili internátu.

    Poďme sa pozrieť na náš príkaz rsync teraz, keď sme pridali niekoľko ďalších prepínačov:

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

    Príkaz je stále veľmi jednoduchý, ale stále sme nevytvorili slušné zálohové riešenie. Napriek tomu, že naše súbory sú teraz v dvoch rôznych fyzických miestach, táto záloha nemá nič, čo nás ochráni pred jednou z hlavných príčin straty údajov: ľudská chyba.

    Zálohovanie snímok

    Ak omylom zmazate súbor, vírus poškodí niektorý z vašich súborov alebo sa stane niečo iné, pri ktorom sú vaše súbory nežiadúce zmenené a potom spustite skript na zálohovanie rsync, vaše zálohované dáta sú prepísané nežiadúcimi zmenami. Keď k takejto záležitosti dôjde (nie v prípade, ale kedy), vaše riešenie zálohovania neudelilo nič, čo by vás ochránilo pred stratou vašich dát.

    Tvorca rsync si to uvedomil a pridal --zálohovanie a --backup-dir argumenty, aby používatelia mohli spustiť rozdielové zálohy. Prvý príklad na webovej stránke rsync zobrazuje skript, kde sa každých sedem dní spúšťa plná záloha a potom sa zmeny v týchto súboroch zálohujú denne v samostatných adresároch. Problém s touto metódou je, že obnoviť súbory, musíte ich efektívne obnoviť sedem rôznych časov. Okrem toho väčšina geekov spúšťa svoje zálohy niekoľkokrát denne, takže môžete v každom okamihu ľahko vytvoriť viac ako 20 rôznych záložných adresárov. Obnova súborov je teraz nielen bolesťou, ale dokonca len prezeranie zálohovaných dát môže byť veľmi časovo náročné - mali by ste vedieť, kedy bol naposledy zmenený súbor, aby ste našli jeho najnovšiu zálohu. Navyše, je neefektívne spustiť iba týždenné (alebo dokonca menej často) prírastkové zálohy.

    Snapshot záloh na záchranu! Zálohovanie snímok nie je nič iné ako prírastkové zálohy, ale využívajú tvrdé odkazy na zachovanie štruktúry súborov pôvodného zdroja. To môže byť ťažké zabaliť hlavu z prvej, tak sa pozrime na príklad.

    Predstierajte, že máme spustený zálohovací skript, ktorý automaticky zálohuje naše údaje každé dve hodiny. Kedykoľvek to rsync urobí, pomenuje každú zálohu vo formáte: Backup-month-day-year-time.

    Takže na konci typického dňa by sme mali zoznam priečinkov v našom cieľovom adresári takto:

    Pri prechode na niektorý z týchto adresárov by ste videli každý súbor zo zdrojového adresára presne tak, ako to bolo v tom čase. Napriek tomu by neexistovali žiadne duplikáty v žiadnych dvoch adresároch. rsync to dosiahne použitím hardlinkingu cez --link-dest = DIR argument.

    Samozrejme, aby sme mali tieto pekne a úhľadne odlíšené adresárové mená, budeme musieť trochu skrátiť náš skript rsync. Poďme sa pozrieť na to, čo by bolo potrebné urobiť na zálohovanie riešenie, ako je tento, a potom budeme vysvetľovať skript podrobnejšie:

    #! / Bin / bash

    #copy old time.txt na čas2.txt

    áno | cp ~ / backup / time.txt ~ / backup / time2.txt

    #overwrite starý súbor time.txt s novým časom

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

    #make súbor denníka

    echo ""> ~ / zálohovanie / rsync-byte + "% F-% I% p" '

    #rsync prí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 / súbory / 'dátum +'% F-% I% p '

    # nezabudnite skopírovať súbor denníka a vložiť ho do zálohy

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

    To by bol typický skript rsync skriptu. V prípade, že sme niekde prehrali, poďme to rozdeliť po kúsku:

    Prvý riadok nášho skriptu skopíruje obsah time.txt na čas2.txt. Kontrola áno potvrdí, že chceme súbor prepísať. Potom vezmeme aktuálny čas a vložime ho do time.txt. Tieto súbory prídu neskôr.

    Nasledujúci riadok robí súbor protokolu rsync a pomenuje rsync-date.log (kde dátum je skutočný dátum a čas).

    Teraz, komplexný príkaz rsync, o ktorom sme vás varovali:

    -avzhPR, -e, --delete, --stats, --log-súbor, --exclude-from, --link-dest - Len prepínače, o ktorých sme hovorili skôr; posúvajte nahor, ak potrebujete aktualizáciu.

    --chmod = Du = rwx, DGO = rx, Fu = RW, Fgo = r - Toto sú povolenia pre cieľový adresár. Keďže robíme tento adresár uprostred nášho skriptu rsync, musíme špecifikovať oprávnenia, aby ho náš užívateľ mohol písať do neho.

    Použitie príkazov dátum a mačka

    Prejdeme každým použitím príkazu dátum a mačka vnútri príkazu rsync v poradí, v akom sa vyskytujú. Poznámka: uvedomujeme si, že existujú iné spôsoby, ako túto funkciu dosiahnuť, najmä s použitím vyhlásenia premenných, ale na účely tejto príručky sme sa rozhodli použiť túto metódu.

    Súbor denníka je špecifikovaný ako:

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

    Prípadne by sme to mohli špecifikovať ako:

    ~ / zálohovanie / rsync-'cat ~ / backup / time.txt'.log

    Či tak alebo onak, --log-file príkaz by mal byť schopný nájsť predtým vytvorený datový súbor s dátumom a napísať ho.

    Súbor cieľového odkazu je zadaný ako:

    --link-dest = / home / geek2 / súbory / 'cat ~ / backup / time2.txt'

    To znamená, že --link-dest Príkaz je daný adresárom predchádzajúcej zálohy. Ak spúšťame zálohovanie každé dve hodiny, a to je v čase, keď sme spustili tento skript, potom je to 16:00 --link-dest príkaz hľadá adresár vytvorený v 2:00 PM a prenáša iba údaje, ktoré sa odvtedy zmenili (ak existujú).

    Zopakovať, preto je čas.txt skopírovaný na čas2.txt na začiatku skriptu, takže --link-dest príkaz môže odkazovať na tento čas neskôr.

    Cieľový adresár je zadaný ako:

    [email protected]: / home / geek2 / súbory / 'dátum +'% F-% I% p ''

    Tento príkaz jednoducho umiestni zdrojové súbory do adresára, ktorý má názov aktuálneho dátumu a času.

    Nakoniec sa ubezpečujeme, že kópia súboru denníka je umiestnená vo vnútri zálohy.

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

    Používame bezpečnú kópiu na portu 12345, aby sme prevzali protokol rsync a umiestnili ho do správneho adresára. Ak chcete vybrať správny súbor denníka a uistiť sa, že skončí na správnom mieste, súbor time.txt sa musí odkazovať pomocou príkazu cat. Ak sa zaujímate o to, prečo sme sa rozhodli skombinovať time.txt namiesto použitia príkazu dátum, je to preto, že pri spustení príkazu rsync mohlo dôjsť veľa času, aby sme sa uistili, že máme správny čas, textový dokument, ktorý sme vytvorili skôr.

    automatizácia

    Použite Cron na Linuxe alebo Plánovač úloh na Windows, aby ste automatizovali rsync skript. Jedna vec, na ktorú musíte byť opatrná, je uistiť sa, že ukončíte všetky bežiace rsync procesy skôr, ako budete pokračovať v novom. Zdá sa, že Plánovač úloh automaticky zatvára všetky už spustené inštancie, ale pre Linux budete musieť byť trochu kreatívnejší.

    Väčšina distribúcií Linuxu môže použiť príkaz pkill, takže si jednoducho nezabudnite pridať nasledujúce informácie na začiatok skriptu rsync:

    pkill -9 rsync

    šifrovanie

    Nie, ešte sme nedospeli. Nakoniec máme fantastické (a zadarmo!) Zálohové riešenie na mieste, ale všetky naše súbory sú stále náchylné na krádež. Dúfajme, že zálohujete súbory na niektoré miesto stovky kilometrov ďaleko. Bez ohľadu na to, ako bezpečné je to vzdialené miesto, krádež a hackovanie môžu byť vždy problémy.

    V našich príkladoch sme tunelovali všetku našu rsync návštevnosť cez SSH, čo znamená, že všetky naše súbory sú šifrované počas prepravy do cieľa. Musíme sa však uistiť, že cieľ je rovnako bezpečný. Nezabúdajte, že rsync šifruje vaše dáta len pri prenose, ale súbory sú otvorené po dosiahnutí cieľa.

    Jedna z najlepších funkcií rsync je, že prenáša iba zmeny v každom súbore. Ak máte všetky vaše súbory zašifrované a urobíte jednu malú zmenu, celý súbor bude musieť byť opätovne odoslaný v dôsledku šifrovania úplne náhodne všetky údaje po akejkoľvek zmene.

    Z tohto dôvodu je najlepšie / najjednoduchšie použiť nejaký typ šifrovania disku, napríklad BitLocker for Windows alebo dm-crypt for Linux. Týmto spôsobom sú vaše dáta chránené v prípade krádeže, ale súbory môžu byť prenášané pomocou rsync a vaše šifrovanie nebráni jeho výkonu. Existujú aj ďalšie možnosti, ktoré fungujú podobne ako rsync alebo dokonca implementujú nejakú formu, napríklad Duplicity, ale chýbajú niektoré funkcie, ktoré rsync ponúka.

    Po nastavení záložných záloh na mieste mimo prevádzku a zašifrovanie vašich zdrojových a cieľových pevných diskov si dajte patrón na zadnej strane na zvládnutie rsync a implementujte najjednoduchšie riešenie na zálohovanie dát.