Domača » kako » Navodila za sinhronizacijo podatkov z Rsync, ki niso začetniki

    Navodila za sinhronizacijo podatkov z Rsync, ki niso začetniki

    Protokol rsync je lahko zelo preprost za navadna opravila varnostnega kopiranja / sinhronizacije, vendar pa vas nekatere bolj napredne funkcije lahko presenetijo. V tem članku bomo prikazali, kako lahko tudi največji podatkovni hranilniki in nadomestni navdušenci uporabljajo rsync kot eno samo rešitev za vse svoje potrebe po redundanci podatkov..

    Opozorilo: Napredni Geeks Samo

    Če sedite tam in razmišljate o tem, "Kaj za vraga je rsync?" Ali "Uporabljam samo rsync za zelo preproste naloge", si lahko ogledate naš prejšnji članek o tem, kako uporabiti rsync za varnostno kopiranje podatkov na Linuxu, kar daje uvod v rsync, vas vodi skozi namestitev in prikaže njene osnovne funkcije. Ko boste spoznali, kako uporabljati rsync (pošteno, ni tako zapleteno) in ste zadovoljni z Linux terminalom, ste pripravljeni na ta napredni vodnik.

    Zaženete rsync v sistemu Windows

    Najprej preberite naše bralce Windows na isti strani kot naši Linux guruji. Čeprav je rsync zgrajen za delovanje na sistemih, podobnih Unixu, ni razloga, da ga ne bi mogli uporabljati tako enostavno v sistemu Windows. Cygwin ustvari čudovit Linux API, ki ga lahko uporabimo za zagon rsynca, zato nadaljujte z njihovim spletnim mestom in prenesite 32-bitno ali 64-bitno različico, odvisno od računalnika.

    Namestitev je enostavna; Vse možnosti lahko shranite na privzete vrednosti, dokler ne pridete do zaslona »Izberi pakete«.

    Zdaj morate narediti enake korake za Vim in SSH, toda paketi bodo videti nekoliko drugačni, ko jih izberete, zato si oglejte nekaj posnetkov zaslona:

    Namestitev Vim:

    Namestitev SSH:

    Ko izberete te tri pakete, nadaljujte s klikom, dokler ne končate namestitve. Nato lahko odprete Cygwin s klikom na ikono, ki jo je namestil namestitveni program na namizju.

    Ukazi rsync: preprosti za napredne

    Zdaj, ko so uporabniki operacijskega sistema Windows na isti strani, si poglejmo preprost ukaz rsync in pokažemo, kako lahko uporaba nekaterih naprednih stikal hitro postane kompleksna.

    Recimo, da imate veliko datotek, ki jih je treba varnostno kopirati - kdo ne te dni? Prenosni trdi disk priključite tako, da lahko varnostno kopirate svoje računalniške datoteke in izdate naslednji ukaz:

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

    Ali pa, kot bi bilo videti na računalniku z operacijskim sistemom Windows s sistemom Cygwin:

    rsync -a / cygdrive / c / datoteke / / cygdrive / e / datoteke /

    Precej preprosto in na tej točki res ni potrebe po uporabi rsync, saj lahko datoteke preprosto povlečete in spustite. Če ima vaš drugi trdi disk že nekaj datotek in potrebuje le posodobljene različice in datoteke, ki so bile ustvarjene od zadnje sinhronizacije, je ta ukaz priročen, ker nove podatke pošlje le na trdi disk. Z velikimi datotekami in zlasti s prenosom datotek po internetu je to velik posel.

    Varnostno kopiranje datotek na zunanji trdi disk in ohranjanje trdega diska na istem mestu kot računalnik je zelo slaba zamisel, zato si poglejmo, kaj bi bilo potrebno za pošiljanje datotek prek interneta na drug računalnik ( enega, ki ste ga najeli, družinskega člana itd.).

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

    Zgornji ukaz bo poslal vaše datoteke na drug računalnik z naslovom IP 10.1.1.1. Iz ciljnega mesta, ki ni več v izvornem imeniku, bi bile izbrisane nepomembne datoteke, imena datotek, ki se prenašajo, tako da imate idejo o tem, kaj se dogaja, in tunel rsync prek SSH na priključku 12345.

    The -a -v -e - brisanje stikala so najbolj osnovna in najpogosteje uporabljena; o tem bi morali že vedeti, če berete to vadnico. Poglejmo še nekatera druga stikala, ki so včasih prezrta, vendar neverjetno uporabna:

    --napredek - To stikalo nam omogoča, da vidimo napredek prenosa vsake datoteke. To je še posebej uporabno pri prenosu velikih datotek prek interneta, vendar lahko brez pretiranega prenosa majhnih datotek prek hitrega omrežja prikaže nesmiselno količino informacij..

    Ukaz rsync z --napredek preklopi med varnostno kopijo:

    --delno - To je še eno stikalo, ki je še posebej uporabno pri prenosu velikih datotek prek interneta. Če se rsync zaradi kakršnega koli razloga prekine sredi prenosa datoteke, se delno prenesena datoteka shrani v ciljni imenik in prenos se nadaljuje, kjer se je prekinil, ko se znova izvede ukaz rsync. Pri prenosu velikih datotek prek interneta (npr. Nekaj ​​gigabajtov) ni nič slabšega, kot če bi imeli nekaj drugega izklopa interneta, modrega zaslona ali človeške napake, ki bi vam poslala prenos datotek, in morali začeti znova.

    -P - to stikalo združuje --napredek in --delno, zato ga uporabite in bo vaš ukaz rsync naredil malo bolj čist.

    -z ali --stisniti - S tem stikalom bodo podatki rsync ob prenosu prenesli podatke, kar bo zmanjšalo količino podatkov, ki jih je treba poslati na cilj. To je pravzaprav precej običajno stikalo, vendar je daleč od bistvenega pomena, le v resnici vam prinaša koristi pri prenosih med počasnimi povezavami in ne dela nič za naslednje vrste datotek: 7z, avi, bz2, deb, g, z iso, jpeg, jpg, mov, mp3, mp4, ogg, rpm, tbz, tgz, z, zip.

    -h ali --človeku berljiv - Če uporabljate --napredek preklopite, boste zagotovo želeli uporabiti tudi to. To je, razen če vam je všeč, da pretvorite bajtov v megabajtov na letenje. The -h stikalo pretvori vse izhodne številke v človeku berljivo obliko, tako da lahko dejansko razumete količino prenesenih podatkov.

    -n ali --suho vožnjo - To stikalo je bistvenega pomena, da veste, ko prvič pišete svoj rsync skript in ga preizkusite. Opravi poskusno vožnjo, vendar dejansko ne izvede nobenih sprememb - morebitne spremembe so še vedno izpisane kot običajno, tako da lahko preberete vse in se prepričate, da je v redu, preden predvajate scenarij v proizvodnjo.

    -R ali --relativno - To stikalo je treba uporabiti, če ciljni imenik še ne obstaja. To možnost bomo uporabili pozneje v tem priročniku, tako da lahko na ciljnem računalniku naredimo imenike z imeni časovnih žigov.

    --izključi - To stikalo se uporablja za povezavo do seznama izključitev, ki vsebuje poti imenikov, ki jih ne želite varnostno kopirati. Potrebuje samo navadno besedilno datoteko s mapo ali potjo datoteke v vsaki vrstici.

    --vključi-od - Podoben --izključi, vendar se povezuje z datoteko, ki vsebuje mape in poti datotek, ki jih želite varnostno kopirati.

    --statistika - V resnici ni pomembno stikalo na kakršen koli način, toda če ste sistemski skrbnik, je lahko priročno poznati podrobne statistične podatke o vsaki varnostni kopiji, tako da lahko spremljate količino prometa, ki se pošilja prek vašega omrežja, in tako.

    --log-datoteka - To vam omogoča pošiljanje izhoda rsync v datoteko dnevnika. To zagotovo priporočamo za samodejne varnostne kopije, v katerih niste sami, da bi brali skozi izhod. Vedno dajte datoteke dnevnika enkrat v prostem času, da se prepričate, da vse deluje pravilno. Prav tako je ključno stikalo za uporabo sysadmina, zato se ne sprašujete, kako so vaše varnostne kopije neuspešne, medtem ko ste zapustili pripravnika..

    Oglejmo si naš ukaz rsync, ko smo dodali še nekaj stikal:

    rsync -avzhP --brisi --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 / datoteke /

    Ukaz je še vedno precej preprost, vendar še vedno nismo ustvarili primerne rešitve za varnostno kopiranje. Čeprav so naše datoteke zdaj na dveh različnih fizičnih lokacijah, ta varnostna kopija ne varuje pred enim od glavnih vzrokov za izgubo podatkov: človeška napaka.

    Varnostne kopije posnetkov

    Če ste pomotoma izbrisali datoteko, virus pokvari katerokoli datoteko ali se zgodi kaj drugega, pri čemer se vaše datoteke neželeno spremenijo, nato pa zaženete skript za varnostno kopiranje rsync, vaše varnostno kopirane podatke prepišete z nezaželenimi spremembami. Ko se takšna stvar zgodi (ne če, ampak kdaj), vaša rešitev za varnostno kopiranje ni nič naredila, da bi vas zaščitila pred izgubo podatkov.

    Ustvarjalec rsync je to spoznal in dodal --rezerva in --backup-dir argumenti, da lahko uporabniki izvajajo diferencialne varnostne kopije. Prvi primer na spletni strani rsync prikazuje skript, kjer se polna varnostna kopija izvaja vsakih sedem dni, nato pa se spremembe teh datotek dnevno shranjujejo v ločene imenike. Težava pri tej metodi je v tem, da jih morate obnoviti sedem različnih časov. Poleg tega večina geeksov izvaja svoje varnostne kopije večkrat na dan, tako da lahko v vsakem trenutku preprosto imate več kot 20 različnih rezervnih imenikov. Ne samo, da je obnovitev datotek zdaj bolečina, ampak tudi samo gledaš skozi vaše varnostne kopije podatkov je lahko zelo zamudno - bi morali vedeti zadnjič, ko je bila datoteka spremenjena, da bi našli svojo zadnjo varnostno kopijo kopijo. Poleg tega je neučinkovito izvajati samo tedenske (ali celo redkeje) inkrementalne varnostne kopije.

    Izdelava varnostnih kopij posnetkov! Rezervne kopije posnetkov niso nič drugega kot inkrementalne varnostne kopije, vendar uporabljajo trdne povezave, da ohranijo datotečno strukturo izvirnega vira. Morda vam bo težko najprej oviti glavo, zato si poglejmo primer.

    Pretvarjajte se, da imamo zagonski skript, ki samodejno varnostno kopira naše podatke vsaki dve uri. Kadar rsync to stori, imenuje vsako varnostno kopijo v obliki: Backup-month-day-year-time.

    Tako bomo na koncu običajnega dneva imeli seznam map v ciljnem imeniku, kot je ta:

    Ko prečkajo kateri koli od teh imenikov, boste videli vsako datoteko iz izvornega imenika natančno tako, kot je bilo v tistem času. Vendar pa ne bi bilo nobenih dvojnikov v nobenem od dveh imenikov. rsync to doseže z uporabo hardlinking skozi --link-dest = DIR prepir.

    Seveda, da bi imeli ta lepo in lepo imenovana imeniška imena, bomo morali nekoliko izboljšati rsync skript. Oglejmo si, kaj bi bilo potrebno, da bi dosegli takšno rešitev za varnostno kopiranje, nato pa bomo podrobneje razložili scenarij:

    #! / bin / bash

    #copy old time.txt v time2.txt

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

    #overwrite old time.txt datoteka z novim časom

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

    #make log datoteko

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

    #rsync ukaz

    rsync -avzhPR --chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r - obdrži - stati --log-datoteko = ~ / 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 '' / /

    # ne pozabite scp datoteke dnevnika in jo shranite z varnostno kopijo

    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 bi bil tipičen posnetek rsync skripta. Če te nekje izgubimo, ga razčlenimo kos po kos:

    Prva vrstica našega skripta kopira vsebino time.txt v time2.txt. Cevi yes so za potrditev, da želimo prepisati datoteko. Nato vzamemo trenutni čas in ga postavimo v time.txt. Te datoteke bodo uporabne kasneje.

    Naslednja vrstica ustvarja datoteko dnevnika rsync, ki jo imenuje rsync-date.log (kjer je datum dejanski datum in čas).

    Zdaj pa zapleten ukaz rsync, o katerem smo vas opozorili:

    -avzhPR, -e, --brisi, - stati, --log-file, --exclude-from, --link-dest - Samo stikala, o katerih smo govorili prej; pomaknite se navzgor, če potrebujete osvežitev.

    --chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r - To so dovoljenja za ciljni imenik. Ker izdelujemo ta imenik sredi našega rsync skripta, moramo določiti dovoljenja, da bo lahko naš uporabnik pisal datoteke.

    Uporaba ukaza za datum in mačko

    Preverili bomo vsako uporabo ukaza datum in mačka znotraj ukaza rsync v vrstnem redu, v katerem se pojavijo. Opomba: zavedamo se, da obstajajo drugi načini za doseganje te funkcionalnosti, zlasti z uporabo deklaracijskih spremenljivk, vendar smo se za namen tega priročnika odločili, da uporabimo to metodo..

    Datoteka dnevnika je določena kot:

    ~ / backup / rsync-'date + '% F-% I% p' '

    Druga možnost je, da smo jo določili kot:

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

    Kakorkoli, --log-datoteka ukaz naj bi lahko našel prej ustvarjeno datirano datoteko dnevnika in jo zapisal.

    Ciljna datoteka povezave je določena kot:

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

    To pomeni, da --link-dest ukazu je podan imenik prejšnje varnostne kopije. Če izvajamo varnostne kopije vsaki dve uri, in to je ob 16:00 v času, ko smo vodili ta skript, potem --link-dest ukaz išče imenik, ustvarjen ob 14:00, in prenese samo podatke, ki so se od takrat spremenili (če obstajajo).

    Ponovimo, zato se time.txt kopira v time2.txt na začetku skripta, tako da --link-dest ukaz lahko sklicuje ta čas pozneje.

    Ciljni imenik je podan kot:

    [email protected]: / home / geek2 / files / 'date +'% F-% I% p ''

    Ta ukaz preprosto postavi izvorne datoteke v imenik, ki ima naslov trenutnega datuma in časa.

    Končno se prepričamo, da je kopija datoteke dnevnika postavljena v varnostno kopijo.

    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

    Uporabljamo varno kopijo na pristanišču 12345, da vzamemo dnevnik rsync in ga postavimo v ustrezen imenik. Če želite izbrati pravilno datoteko dnevnika in se prepričati, da se konča na pravem mestu, morate datoteko time.txt povezati z ukazom cat. Če se sprašujete, zakaj smo se odločili za cat time.txt namesto samo ukaza date, je to zato, ker se je veliko časa lahko zgodilo, medtem ko je bil ukaz rsync zagnan, tako da se prepričamo, da imamo pravi čas, samo mačo besedilni dokument, ki smo ga ustvarili prej.

    Avtomatizacija

    Uporabite Cron na Linuxu ali Task Scheduler na Windows, da avtomatizirate svoj rsync skript. Ena stvar, ki jo morate paziti, je, da se prepričate, da končate vse trenutne procese rsync, preden nadaljujete z novim. Zdi se, da razporejevalnik opravil samodejno zapre vse že zagnane primerke, za Linux pa boste morali biti nekoliko bolj ustvarjalni.

    Večina distribucij Linuxa lahko uporablja ukaz pkill, zato na začetek rsync skripta dodajte naslednje:

    pkill -9 rsync

    Šifriranje

    Ne, še nismo končali. Končno imamo fantastično (in brezplačno!) Rešitev za varnostno kopiranje, vendar so vse naše datoteke še vedno dovzetne za krajo. Upajmo, da svoje datoteke shranjujete na nekaj sto kilometrov stran. Ne glede na to, kako varno je ta oddaljen kraj, so lahko kraje in vdori vedno težave.

    V naših primerih smo tunelirali ves naš rsync promet prek SSH, kar pomeni, da so vse naše datoteke šifrirane, medtem ko so v tranzitu do cilja. Vendar pa se moramo prepričati, da je destinacija prav tako varna. Upoštevajte, da rsync šifrira samo vaše podatke med prenosom, vendar so datoteke odprte, ko dosežejo svoj cilj..

    Ena od najboljših lastnosti rsync je, da samo prenaša spremembe v vsaki datoteki. Če so vse vaše datoteke šifrirane in naredite eno manjšo spremembo, bo treba celotno datoteko prenesti kot rezultat šifriranja, ki bo povsem naključno zajel vse podatke po vsaki spremembi.

    Zato je najbolje / najlažje uporabiti nekakšno šifriranje diskov, kot je BitLocker za Windows ali dm-crypt za Linux. Tako bodo vaši podatki zaščiteni v primeru kraje, vendar se datoteke lahko prenesejo z rsync in šifriranje ne bo oviralo njegove učinkovitosti. Na voljo so še druge možnosti, ki delujejo podobno kot rsync ali celo izvajajo določeno obliko, na primer Duplicity, vendar jim manjkajo nekatere funkcije, ki jih ponuja rsync..

    Ko nastavite varnostne kopije posnetkov na zunanji lokaciji in šifrirate izvorne in ciljne trde diske, si podarite, da boste obvladali rsync in izvedli najbolj varne rešitve za varnostno kopiranje podatkov..