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

Obsah:

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
Anonim
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.
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: Iba pokročilí

Ak sedíte tam a myslíte si "Čo je heck rsync?" Alebo "Používam rsync iba pre veľmi jednoduché úlohy", možno by ste sa chceli pozrieť na náš predchádzajúci článok o tom, ako rsync použiť na zálohovanie vašich dát na Linuxe, čo dáva úvod do rsync vás prevedie inštaláciou a zobrazuje 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.

Spúšťanie rsync v 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ú vyzerať trochu inak, keď ich vyberiete, takže tu sú niektoré screenshoty:
Teraz musíte urobiť rovnaké kroky pre Vim a SSH, ale balíky sa budú vyzerať trochu inak, keď ich vyberiete, takže tu sú niektoré screenshoty:

Inštalácia Vim:

Inštalácia SSH:
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.
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ď 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é potrebujú 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/files/ /mnt/usb/files/

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

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

Docela jednoduché a v tom okamihu nie je naozaj 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 udržanie pevného disku na rovnakom mieste ako 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/files/ [email protected]:/home/geek2/files/

Vyššie uvedený príkaz by odoslal 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 --delete

prepínače sú niektoré z najzákladnejších a bežne používaných; mali by ste už o nich vedieť veľa, ak čí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č 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

--progress

prepínať ako záloha:

Image
Image

--partial

- 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

--partial

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á rsync komprimovať pri prenose súborov, č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

--human-readable

- Ak používate

--progress

prepínač, budete určite chcieť použiť aj tento. To znamená, že ak nechcete konvertovať bajty na megabajty za behu.

-h

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

--dry-run

- Tento prepínač je nevyhnutný na to, aby ste vedeli pri prvom písaní rsync skriptu a jeho testovaní. 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

- Podobný

--exclude-from

ale odkazuje na súbor, ktorý obsahuje adresáre a cesty súborov dát, ktoré chcete zálohovať.

--stats

- 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 podobne.

--log-file

- Toto 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 niekoľko ďalších prepínačov:

rsync -avzhP --delete --stats --log-file=/home/geek/rsynclogs/backup.log --exclude-from '/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 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 dát: ľudská chyba.

Zálohovanie snímok

Ak omylom odstránite súbor, vírus poškodí niektorý z vašich súborov alebo sa stane niečo iného, 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žiaducimi 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 to pochopil a pridal

--backup

a

--backup-dir

aby používatelia mohli spustiť rozdielové 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.

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úboru pôvodného zdroja. To môže byť ťažké zabaliť hlavu okolo najprv, 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 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 priečinkov 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 v tom čase. Napriek tomu nebudú existovať žiadne duplikáty vo všetkých dvoch adresároch. rsync to dosiahne pomocou hardlinkingu cez
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 v tom čase. Napriek tomu nebudú existovať žiadne duplikáty vo všetkých dvoch adresároch. rsync to dosiahne pomocou hardlinkingu cez

--link-dest=DIR

argumentom.

Samozrejme, aby sme mali tieto pekne a úhľadne odovzdané 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šenia, ako je tento, a potom budeme vysvetľovať skript podrobnejšie:

#!/bin/bash

#copy old time.txt to time2.txt

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

#overwrite old time.txt file with new time

echo `date +”%F-%I%p”` > ~/backup/time.txt

#make the log file

echo “” > ~/backup/rsync-`date +”%F-%I%p”`.log

#rsync command

rsync -avzhPR --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r --delete --stats --log-file=~/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/`date +”%F-%I%p”`/

#don’t forget to scp the log file and put it with the backup

scp -P 12345 ~/backup/rsync-`cat ~/backup/time.txt`.log [email protected]:/home/geek2/files/`cat ~/backup/time.txt`/rsync-`cat ~/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 prepísať súbor. 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 ho rsync-date.log (kde dátum je skutočný dátum a čas).

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

-avzhPR, -e, --delete, --stats, --log-file, --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 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 špecifikovaný ako:

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

Inak by sme to mohli špecifikovať ako:

~/backup/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 určený ako:

--link-dest=/home/geek2/files/`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, v čase, keď sme spustili tento skript, je to 4:00 PM

--link-dest

príkaz hľadá adresár vytvorený v 14:00 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 to neskôr.

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

[email protected]:/home/geek2/files/`date +”%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/files/`cat ~/backup/time.txt`/rsync-`cat ~/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 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

Nie, ešte sme nedospeli. 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 je možné prenášať 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 si zoberte patu na zadnej strane, aby ste mohli zvládnuť rsync a implementovať najjednoduchšie riešenie zálohovania dát.

Odporúča: