17Aug

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 môžu aj najväčší držitelia údajov a záložní nadšenci rsync používať ako jediné riešenie pre všetky ich potreby redundancie údajov.

Upozornenie: Pokročilé Geeks Only

Ak sedíte tam, keď si myslíte, "Čo je heck rsync?" Alebo "Používam rsync len pre veľmi jednoduché úlohy", možno by ste si chceli pozrieť náš predchádzajúci článok o používaní rsync na zálohovanievaše dáta v systéme Linux, ktoré poskytujú úvod do rsync, vás prevedú inštaláciou a zobrazujú svoje základné funkcie. Akonáhle budete mať pevné pochopenie, ako používať rsync( úprimne, to nie je tak zložité) a sú pohodlné s terminálom Linux, ste pripravení prejsť na tohto pokročilého sprievodcu.

Spustenie rsync na systéme Windows

Po prvé, dostaneme naše čítače Windows na rovnakej stránke ako naši Linuxoví guru. Aj keď 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é linuxové rozhranie 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 "Vyberte balíky".

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

Inštalácia Vim:

Inštalácia SSH:

vybrať tie tri balíky, pokračujte kliknutím na tlačidlo Next, 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ď používatelia systému Windows sú na tej istej stránke, poďme sa pozrieť na jednoduchý príkaz rsync a ukážeme, ako môže byť 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 nekoná?Pripojte prenosný pevný disk, aby ste mohli zálohovať súbory vášho počítača a vydanie nasledovného príkazu:

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

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

rsync -a /cygdrive/c/files/ /cygdrive/e/files/

Docela jednoduché a naže v skutočnosti nie je potrebné používať rsync, pretože by ste mohli jednoducho pretiahnuť súbory. Ak však váš druhý 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 najmä prenosom súborov cez internet je to veľký problém.

Zálohovanie súborov na externý pevný disk a potom držanie pevného disku na rovnakom mieste ako počítač je veľmi zlý nápad, takže 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/files/ [email protected]: /home/geek2/files/

Vyššie uvedený príkaz zašle vaše súbory do iného počítača s IP adresou 10.1.1.1.Odstráni cudzie súbory z cieľového miesta, ktoré už neexistujú v zdrojovom adresári, vysielanie prenesených súborov, takže máte predstavu o tom, čo sa deje, a tunel rsync cez SSH na portu 12345.

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

- progress - Tento prepínač nám umožňuje vidieť priebeh 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 prepínačom - progress ako súčasťou zálohy:

- part - 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 v priebehu 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 vykonaní 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 chyba človeka zapríčiniť prenos súborov a musieť začať znova.

-P - tento prepínač spája --progress a -part, takže ho použite namiesto toho a urobí to príkaz rsync trochu lepšie.

-z alebo --compress - 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 je ďaleko od podstatného, ​​len skutočne prospech pre prevody medzi pomalé pripojenie, a to 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.

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

-n alebo -dry-run - Tento prepínač je nevyhnutný na to, aby ste vedeli, kedy prvýkrát píšete rsync skript a vyskúšate ho. Vykonáva skúšobnú prevádzku, ale v skutočnosti nezmení ž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 na výrobu.

-R alebo --relative - 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.

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

- include-from - Podobne ako --exclude-from, 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 sledovať množstvo prenosu, ktoré sa odosiela cez vašu sieť a také,

- log-file - Umožňuje odoslať výstup rsync do súboru denníka. Rozhodne to odporúčame pre automatické zálohovanie, v ktorom nie ste tam, aby ste si sami prečítali výstup. Vždy dajte súborom denníka vo svojom voľnom čase, aby ste sa uistili, že všetko funguje správne. Tiež je to dôležitý prepínač pre používanie systému sysadmin, takže sa nezabúdate na to, ako sa vaše zálohy zlyhali, kým ste opustili stážistu.

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

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

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 sa nachádzajú v dvoch rôznych fyzických miestach, táto záloha nemá nič na to, aby nás ochránila pred jednou z hlavných príčin straty dát: ľudská chyba. Zálohovanie

Snapshot

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 situácii 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 argumenty --backup a --backup-dir, aby používatelia mohli spustiť rozdielne zálohy. Prvý príklad na webovej stránke rsync zobrazuje skript, v ktorom 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 na obnovenie súborov musíte efektívne obnoviť ich sedem rôznych časov. Navyše väčšina geekov spúšťa zálohovanie 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 súbor naposledy zmenený, aby našiel svoju najnovšiu zálohu. Navyše je neefektívne spustiť iba týždenné( alebo dokonca menej často) prírastkové zálohy.

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

Predstierate, že máme spustený zálohovací skript, ktorý automaticky zálohuje naše dáta každé dve hodiny. Kedykoľvek to robí rsync, 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 adresárov v našom cieľovom adresári takto:

Pri prechode niektorého z týchto adresárov by ste videli každý súbor zo zdrojového adresára presne tak, ako to bolo vtedy, Napriek tomu by neexistovali žiadne duplikáty vo všetkých dvoch adresároch.rsync to dosiahne pomocou hardlinkingu prostredníctvom argumentu --link-dest = DIR.

Samozrejme, aby sme mali tieto pekne a úhľadne usporiadané názvy adresárov, budeme musieť trochu skrátiť náš rsync skript. 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 starý čas.txt na čas2.txt

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

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

echo `date +"% F-% I% p "` & gt;~ /backup/ time.txt

# urobiť súbor denníka

echo "" & gt;~ /backup/ rsync -jdate + "% F-% I% p" `.log

#rsync príkaz

rsync -avzhPR -chmod = Du = rwx, Dgo = rx, Fu = rw,-stats -log-súbor = ~ /backup/ rsync -date + "% F-% I% 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/files/ `dátum + '% F-% I% p'` /

# nezabudnite skenovať log súbor a dať hozálohovanie

scp -P 12345 ~ /backup/ rsync -catcat /backup/ time.txt`.log [email protected]: /home/geek2/files/ `kat ~ /backup/ time.txt` / rsync -catcat /backup/ time.txt`.log

Toby bol typický skript rsync skriptu. V prípade, že sme vás niekde stratili, poďme to rozdeliť po kúsku:

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

Nasledujúci riadok robí súbor protokolu rsync a pomenuje ho 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-file, -exclude-from, -link-dest -Justprepí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 rsync skriptu, musíme špecifikovať povolenia, aby náš užívateľ mohol do neho zapisovať súbory.

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 pre účely tejto príručky sme sa rozhodli použiť túto metódu.

Súbor denníka je zadaný ako:

~ /backup/ rsync-`date + '% F-% I% p "`. log

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

~ /backup/ rsync -catcat /backup/ time.txt`.log

V každom prípade príkaz -log-súbor by mal byť schopný nájsť predtým vytvorený datový súbor s dátumom a napísať ho.

Cieľový súbor odkazu je určený ako:

- link-dest = /home/geek2/files/ `cat ~ /backup/ time2.txt`

To znamená, že príkaz --link-dest je uvedený v adresári predchádzajúcej zálohy. Ak spúšťame zálohovanie každé dve hodiny a v čase spustenia tohto skriptu je 4:00 PM, potom príkaz --link-dest hľadá adresár vytvorený v 14:00 a prenáša iba údaje, ktoré sa odvtedy zmenili( Ak nejaký).

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

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

[email protected]: /home/geek2/files/ `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 -catcat /backup/ time.txt`.log [email protected]: /home/geek2/files/ `kat ~ /backup/ time.txt` / rsync -catcat /backup/ time.txt`.log

Používamezabezpečte kópiu na portu 12345, aby ste prijali 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 skrátiť čas.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 v systéme Windows na automatizáciu skriptu rsync. Jedna vec, na ktorú musíte byť opatrná, je zabezpečiť ukončenie všetkých bežiacich rsync procesov 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 linuxových distribúcií 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

No, ešte nie sme hotoví.Konečne máme fantastické riešenie zálohovania( a zadarmo!), Ale všetky naše súbory sú stále citlivé 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 hackanie 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ú po otvorení na miesto určenia úplne otvorené.

Jednou 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ť znovu vyslaný 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 fungovaniu. 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ádzky a zašifrovanie vašich zdrojových a cieľových pevných diskov dávajte si na chrbte zvládnutie rsync a implementáciu čo najjednoduchšieho riešenia zálohovania dát.