17Aug
Protokol rsync je lahko precej enostaven za uporabo za običajna opravila za varnostno kopiranje / sinhronizacijo, vendar pa vas bodo nekatere bolj napredne funkcije presenetile. V tem članku bomo pokazali, kako lahko tudi največji podatkovni zapisniki in rezervni navdušenci lahko uporabijo rsync kot eno rešitev za vse njihove potrebe za redundanco podatkov.
Opozorilo: samo napredni geeksi
Če sedite tam, ko razmišljate o tem, kaj je všeč rsync? Ali pa uporabljam samo rsync za res preproste naloge, si lahko ogledate naš prejšnji članek o tem, kako uporabljati rsync za varnostno kopiranjesvoje podatke na Linuxu, ki vam predstavljajo rsync, vas vodijo skozi namestitev in predstavljajo svoje osnovne funkcije. Ko se odločite, kako uporabljati rsync( resnično, to ni tako zapleteno) in je udobno z Linux terminalom, ste pripravljeni na napredovanje v ta napredni vodnik.
Running rsync v operacijskem sistemu Windows
Prvič, preberite naše bralce z Windows na isti strani kot naši gurusi v Linuxu.Čeprav je rsync zgrajen za delovanje v Unix podobnih sistemih, ni razloga, da ga ne bi mogli uporabljati prav tako enostavno v operacijskem sistemu Windows. Cygwin proizvaja čudovit Linux API, ki ga lahko uporabimo za zagon rsync, zato se obrnite na svojo spletno stran in prenesite 32-bitno ali 64-bitno različico, odvisno od vašega računalnika.
Namestitev je enostavna;lahko ohranite vse možnosti po svojih privzetih vrednostih, dokler ne pridete do zaslona »Izbira paketov«.
Zdaj morate narediti enake korake za Vim in SSH, vendar pa se bodo paketi nekoliko spremenili, ko jih boste izbrali, zato je nekaj posnetkov zaslona:
Namestitev Vim:
Nameščanje SSH:
Ko ste žeizbrali te tri pakete, tako da kliknete naslednje, dokler ne končate namestitve. Nato lahko odprete Cygwin tako, da kliknete ikono, ki jo je namestil namestil na namizje.
ukazi rsync: enostaven za napreden
Zdaj, ko so uporabniki sistema Windows na isti strani, si oglejmo preprost ukaz rsync in pokažite, kako lahko uporaba nekaterih naprednih stikal hitro postane zapletena.
Recimo, da imate veliko datotek, ki jih je treba varnostno kopirati - kdo ne te dni? Vklopite prenosni trdi disk, tako da lahko varnostno kopirate datoteke z računalniki in izdajte naslednji ukaz:
rsync -a /home/geek/files/ /mnt/usb/files/
Ali pa bi izgledal na računalniku z operacijskim sistemom Windows s sistemom Cygwin:
rsync -a /cygdrive/c/files/ /cygdrive/e/files/
Precej enostavno in prita točka res ni treba uporabljati rsync, ker bi lahko povlečete in spustili datoteke.Če pa vaš drugi trdi disk že vsebuje nekaj datotek in potrebuje samo posodobljene različice in datoteke, ki so bile ustvarjene od zadnje sinhronizacije, je ta ukaz priročen, ker le nove podatke prenese na trdi disk. Z velikimi datotekami in še zlasti prenosom datotek preko interneta, je to velika stvar.
Varnostno kopiranje datotek na zunanji trdi disk in shranjevanje trdega diska na isto lokacijo kot vaš računalnik je zelo slaba ideja, zato si oglejmo, kaj bi to zahtevalo, če želite začeti pošiljati datoteke prek interneta v drug računalnik(eno, ki ste ga najeli, družinski člani itd.).
rsync -av -delete -e 'ssh -p 12345' /home/geek/files/ [email protected]: /home/geek2/files/
Zgornji ukaz bo vaše datoteke poslal v drug računalnik z naslovom IP 10.1.1.1.Izbriše druge datoteke iz cilja, ki v izvornem imeniku ne obstajajo več, izhodne datoteke prenesejo, tako da imate idejo o tem, kaj se dogaja, in tunel rsync preko SSH v pristanišču 12345.
-a -v -e --delna stikala so nekateri najpogostejši in najpogosteje uporabljeni;če že berete to vadbo, jih že poznate. Gremo preko nekaterih drugih stikal, ki se včasih prezrejo, vendar neverjetno uporabne:
--progress - To stikalo nam omogoča ogled napredka prenosa posamezne datoteke. To je še posebej koristno pri prenosu velikih datotek preko interneta, lahko pa prenaša nesmiselno količino informacij, ko samo prenese majhne datoteke v hitro omrežje.
Ukaz rsync s strežnikom --progress kot varnostno kopiranje je v teku:
- delno - to je drugo stikalo, ki je še posebej uporabno pri prenosu velikih datotek prek interneta.Če je rsync prek katerega koli razloga prek katerega koli razloga sredi prenosa datotek, se delno prenesena datoteka hrani v ciljnem imeniku in prenos se nadaljuje, ko se je izklopil, ko se ukaz rsync ponovno izvede. Pri prenosu velikih datotek prek interneta( recimo, nekaj gigabajtov) ni nič slabše, kot če imate nekaj sekundnega internetnega izpada, modrega zaslona ali človeške napake, ki potuje do prenosa datotek in se mora znova začeti.
-P - to stikalo združuje --progress in -partial, zato ga uporabite namesto tega, da bo vaš ukaz rsync malo bolj neateren.
-z ali -compress - To stikalo bo rsync stisnilo podatke o datoteki, ko se bodo prenesle, kar bo zmanjšalo količino podatkov, ki jih je treba poslati v cilj. To je pravzaprav precej pogost stik, vendar je daleč od bistvenega pomena, le vam resnično koristi pri prenosih med počasnimi povezavami in ne naredi ničesar za naslednje vrste datotek: 7z, avi, bz2, deb, g, z iso, jpeg, jpg,mov, mp3, mp4, ogg, rpm, tbz, tgz, z, zip.
-h ali - človeško berljiv - če uporabljate stikalo --progress, boste zagotovo želeli uporabiti tudi to. To pomeni, razen če želite pretvoriti byte v megabajtov na letenje. Stikalo -h pretvori vse izpisane številke v človeško berljivo obliko, tako da lahko dejansko razumete količino prenesenih podatkov.
-n ali -dry-run - To stikalo je ključnega pomena za vedenje, ko prvič napišete svoj rsync skript in ga testirate. Opravlja preizkusni zagon, vendar dejansko ne spremeni - morebitne spremembe so še vedno izpisane kot običajne, tako da lahko preberete več o vsem in se prepričate, da je videti v redu, preden vaš scenarij v produkcijo.
-R ali -relative - To stikalo je treba uporabiti, če ciljni imenik še ne obstaja. To možnost bomo uporabili kasneje v tem priročniku, tako da lahko na ciljnem računalniku naredimo imenike s časovnimi oznakami v imenih map.
--exclude-from - To stikalo se uporablja za povezavo s seznamom izključitev, ki vsebuje poti v imeniku, ki jih ne želite varnostno kopirati. Potrebuje samo navadno besedilno datoteko z imenikom ali potjo datoteke v vsaki vrstici.
--include-from - Podobno kot --exclude-from, vendar se povezuje z datoteko, ki vsebuje imenike in poti datotek podatkov, ki jih želite varnostno kopirati.
--stats - Ni res pomemben stik z nobenim sredstvom, če pa ste sistemski, je lahko priročen, da poznate podrobne statistične podatke vsake varnostne kopije, tako da lahko spremljate količino prometa, ki se pošilja prek vašega omrežja, in tako.
--log-file - To vam omogoča pošiljanje izpisa rsync v datoteko dnevnika. To zagotovo priporočamo za avtomatske varnostne kopije, v katerih niste tam, da bi sami brali skozi izhod. V prostem času vedno dajte log datoteko, da zagotovite, da vse deluje pravilno. Prav tako je ključno stikalo za uporabo sistema sysadmin, zato vas ne zanima, kako so vaše varnostne kopije neuspešne, medtem ko ste zapustili stažista.
Oglejmo si naš ukaz rsync zdaj, ko dodamo še nekaj dodatnih stikal:
rsync -avzhP -delete -stats -log-file = /home/geek/rsynclogs/ backup.log -exclude-iz "/home/geek/ exclude.txt"-e 'ssh -p 12345' /home/geek/files/ [email protected]: /home/geek2/files/
Ukaz je še vedno precej preprost, vendar še vedno nismo ustvarili dostojne varnostne rešitve.Čeprav so naše datoteke zdaj na dveh različnih fizičnih lokacijah, ta varnostna kopija ne preprečuje, da bi nas zaščitili pred enim od glavnih vzrokov za izgubo podatkov: človeško napako.
Backups Snapshot
Če po nesreči izbrišete datoteko, virus poškoduje katero koli od vaših datotek ali pa se zgodi nekaj drugega, pri čemer so vaše datoteke nezaželeno spremenjene, nato pa zaženete rsync rezervni skript, vaši varnostni podatki se prepišejo z neželenimi spremembami. Ko se taka stvar zgodi( ne, če, ampak kdaj), vaša rezervna rešitev ni storila ničesar, da bi vas zaščitila pred izgubo podatkov.
Izdelovalec rsync je to uresničil in dodal argumente --backup in --backup-dir, da bi uporabniki lahko zagnali različno varnostno kopiranje. Prvi primer na spletnem mestu rsync prikazuje skript, kjer se vsakih sedem dni izvaja popolna varnostna kopija, nato pa se dnevno varnostno kopirajo v ločene imenike. Težava s to metodo je, da si želite obnoviti svoje datoteke, jih morate učinkovito 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 20 ali več različnih imenikov za varnostno kopiranje. Ne le, da si vaše datoteke zdaj opomorejo za bolečino, lahko pa je videti tudi le, če si ogledate varnostne kopije podatkov, saj je to zelo časovno - znali bi morali, ko ste nazadnje spremenili datoteko, da bi našli najnovejšo varnostno kopijo. Poleg tega je neučinkovito izvajati samo tedensko( ali celo manj pogosto v nekaterih primerih) inkrementalnih varnostnih kopij. Varnostne kopije varnostnih kopij
za reševanje! Snapshot varnostne kopije niso nič več kot prirastne varnostne kopije, vendar uporabljajo trde povezave, da ohranijo strukturo datoteke prvotnega vira. To je morda težko najprej obiti glavo, zato si oglejmo primer.
Pretvarjamo, da imamo zagonsko skripto, ki samodejno podpira naše podatke vsaki dve uri. Kadarkoli rsync to naredi, vsaka varnostna kopija prikaže v obliki: varnostnega kopiranja-mesec-dan-leto.
Na koncu tipičen dan bi imeli seznam namiznih map v našem namembnem imeniku:
Ko preiščete katerikoli od teh imenikov, bi videli vsako datoteko iz izvornega imenika točno tako kot je bilo takrat. Vendar pa ne bi bilo duplikatov v vseh dveh imenikov.rsync to doseže z uporabo trdega povezovanja prek argumenta -link-dest = DIR.
Seveda, da bi imeli ta lepo in lepo dated imena imenikov, bomo morali nekoliko bolj zasidrati svoj rsync skript. Oglejmo si, kaj bi bilo potrebno za izpolnitev varnostne rešitve, kot je ta, in potem bomo podrobneje razložili skripto:
#!/bin/ bash
#copy stari čas.txt do časa2.txt
da |cp ~ /backup/ time.txt ~ /backup/ time2.txt
#overwrite staro datoteko time.txt z novim časom
echo `datum +"% F-% I% p "` & gt;~ /backup/ time.txt
# ustvariti datoteko dnevnika
echo "" & gt;~ /backup/ rsync-`date + "% F-% I% p" `.log
#rsync ukaz
rsync -avzhPR --chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r --stats --log-file = ~ /backup/ rsync-`date +"% F-% I% p "`. log --exclude-from '~ / exclude.txt' --link-dest = /home/geek2/files/ `cat ~ /backup/time2.txt`-s '-sh 12345' /home/geek/files/ [email protected]: /home/geek2/files/ `datum +"% F-% I% p "` /
# ne pozabite, da datoteko dnevnika shranite in jo vstavitebackup
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
Tobi bil tipičen snemalni rsync skript. V primeru, da smo te nekje izgubili, ga razkrijemo po delih:
Prva vrstica našega skripta kopira vsebino time.txt v time2.txt. Da cev potrdi, da želimo prepisati datoteko. Nato vzamemo trenutni čas in ga damo v čas.txt. Te datoteke se bodo zgodile kasneje.
Naslednja vrstica naredi datoteko dnevnika rsync in jo imenuje rsync-date.log( kjer je datum dejanski datum in čas).
Zdaj, kompleksni ukaz rsync, o katerem smo vas opozorili:
-avzhPR, -e, --delete, --stats, --log-file, --exclude-from, --link-dest - Juststikala, o katerih smo prej govorili;se pomaknite 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 skripta rsync, moramo določiti dovoljenja, tako da lahko naši uporabniki zapisujejo datoteke.
Uporaba ukazov datuma in mačke
Prebremenili bomo vsako uporabo ukazov datuma in mačka v ukazu rsync, v vrstnem redu, da se pojavijo. Opomba: zavedamo se, da obstajajo še drugi načini za uresničitev te funkcionalnosti, zlasti z uporabo razglasitev spremenljivk, vendar smo se v tem priročniku odločili za uporabo te metode.
Datoteka dnevnika je podana kot:
~ /backup/ rsync-`date + "% F-% I% p" `.log
Lahko bi tudi navedli:
~ /backup/ rsync-`cat ~ /backup/ time.txt`.log
Kakorkoli, ukaz -log-file bi moral najti vnaprej ustvarjeno datoteko datiranega dnevnika in ji pisati.
Ciljna datoteka povezave je podana kot:
-link-dest = /home/geek2/files/ `mačka ~ /backup/ time2.txt`
To pomeni, da je ukaz -link-dest dodeljen imenik prejšnje varnostne kopije.Če izvajamo varnostne kopije vsake dve uri in je ob 16:00 v času, ko smo zagnali ta skript, potem ukaz -link-dest išče mapo, ustvarjeno ob 2:00 in prenese samo podatke, ki so se od takrat spremenili( če kateri).
Ponovite, zato se time.txt kopira na čas2.txt na začetku skripta, tako da se ukaz -link-dest lahko pozneje sklicuje.
Ciljni imenik je podan kot:
[email protected]: /home/geek2/files/ `datum +"% F-% I% p "`
Ta ukaz preprosto postavlja izvorne datoteke v imenik, ki ima naslov trenutnega datuma in časa.
Končno se prepričamo, da je kopija datoteke dnevnika nameščena 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
Uporabljamovarno kopirajte na vrata 12345, da vzamete dnevnik rsync in ga namestite v ustrezen imenik.Če želite izbrati pravilno datoteko dnevnika in se prepričati, da se konča na pravem mestu, je treba datoteko time.txt sklicevati z ukazom cat.Če ste se spraševali, zakaj smo se odločili za mačko time.txt, namesto da bi le uporabili ukaz za datum, je to, ker se je lahko zgodilo veliko časa, medtem ko je bil ukaz rsync zagnan, da bi se prepričali, da imamo pravi čas,besedilo, ki smo ga ustvarili prej.
Automation
Uporabite Cron v Linuxu ali načrtovalniku opravil v sistemu Windows, da avtomatizirate svoj rsync skript. Ena stvar, ki jo morate biti previdni, je, da se prepričate, da končate vse trenutno izvajajo rsync postopke, preden nadaljujete novo. Zdi se, da je načrtovalnik opravil samodejno zaprl vse že izvedene primere, vendar za Linux morate biti malo bolj ustvarjalni.
Večina distribucij Linuxa lahko uporabi ukaz pkill, tako da samo na začetku vašega rsync skripta dodajte naslednje:
pkill -9 rsync
šifriranje
Ne, še nisva končana. Končno imamo na voljo fantastično( in brezplačno!) Varnostno rešitev, vendar so vse naše datoteke še vedno dovzetne za krajo. Upajmo, da boste varnostno kopirali svoje datoteke v nekaj sto kilometrov stran. Ni važno, kako varen je ta kraj, kraje in hekanje so lahko vedno težave.
V naših primerih smo preusmerili ves naš promet rsync prek SSH, kar pomeni, da so vse naše datoteke šifrirane med prehodom na cilj. Vendar pa moramo poskrbeti, da je destinacija prav tako varna. Imejte v mislih, da rsync samo šifrira vaše podatke, ko se prenašajo, vendar so datoteke široko odprte, ko dosežejo cilj.
Ena izmed najboljših funkcij rsync je ta, da prenaša samo spremembe v vsaki datoteki.Če imate vse svoje datoteke šifrirane in naredite eno manjšo spremembo, bo celotna datoteka morala biti ponovno prenesena kot rezultat šifriranja, ki bo naključno nakazala vse podatke po vsaki spremembi.
Iz tega razloga je najbolje ali najlažje uporabiti neko vrsto šifriranja diska, na primer BitLocker for Windows ali dm-crypt za Linux. Na ta način so vaši podatki zaščiteni v primeru kraje, vendar se lahko datoteke prenesejo z rsync in vaše šifriranje ne bo oviralo njegove učinkovitosti. Obstajajo še druge možnosti, ki delujejo podobno kot rsync ali celo izvajajo kakšno obliko zapisa, na primer Duplicity, vendar nimajo nekaterih funkcij, ki jih ponuja rsync.
Ko nastavite varnostne kopije posnetkov na zunanji lokaciji in šifrirate izvorne in ciljne trde diske, se obrnite na hrbtno stran za upravljanje z rsync in izvajanje najbolj zanesljive rešitve za varnostno kopiranje podatkov.