Koduleht » kuidas » Rsynciga andmete sünkroonimise juhis mitte-algajale

    Rsynciga andmete sünkroonimise juhis mitte-algajale

    Rsync-protokoll võib olla tavaliste varundus- / sünkroonimistööde jaoks üsna lihtne, kuid mõned selle täiustatud funktsioonid võivad teid üllatada. Selles artiklis näitame, kuidas isegi suurimad andmeharjutajad ja varundajad saavad rsyncit kasutada ühe lahendusena kõigi nende andmete koondamise vajadustele.

    Hoiatus: ainult täiustatud geeks

    Kui te istute seal, mõtlesin, et “Mis kuradit on rsync?” Või “Ma kasutan ainult rsynci tõeliselt lihtsate ülesannete jaoks,” võiksite vaadata meie eelmist artiklit selle kohta, kuidas kasutada rsync'i andmete varundamiseks Linuxis, mis annab sissejuhatus rsync'i, juhendab teid paigaldamise kaudu ja tutvustab selle põhifunktsioone. Kui olete kindel, kuidas kasutada rsynci (ausalt öeldes, see ei ole nii keeruline) ja olete Linuxi terminaliga rahul, olete valmis edasi liikuma selle täiustatud juhendi juurde.

    Rsynci käivitamine Windowsis

    Esiteks, lase meie Windowsi lugejad samal lehel nagu meie Linuxi spetsialistid. Kuigi rsync on loodud töötama Unixi sarnastes süsteemides, ei ole mingit põhjust, miks te ei tohiks seda Windowsis lihtsalt kasutada. Cygwin toodab suurepärase Linuxi API, mida saame kasutada rsynci käivitamiseks, nii et peate oma veebisaidi juurde ja laadige 32-bitine või 64-bitine versioon, sõltuvalt teie arvutist.

    Paigaldamine on lihtne; saate hoida kõiki suvandeid oma vaikeväärtustes, kuni jõuad ekraanile „Vali paketid”.

    Nüüd peate tegema samad sammud Vim ja SSH puhul, kuid paketid näevad neid valides veidi erinevalt, nii et siin on mõned pildid:

    Vimi installimine:

    SSH installimine:

    Kui olete need kolm paketti valinud, klõpsa alles, kuni olete installeerimise lõpetanud. Seejärel saate Cygwini avada klõpsates ikoonil, mille paigaldaja teie töölauale pani.

    rsync Käsud: lihtne ja täiustatud

    Nüüd, kui Windowsi kasutajad on samal lehel, vaatame lihtsat rsync käsku ja näitame, kuidas mõnede edasijõudnud lülitite kasutamine muudab selle keeruliseks.

    Oletame, et teil on hulk faile, mis vajavad varundamist - kes ei ole neid päevi? Ühendate oma kaasaskantava kõvaketta, et saaksite oma arvutifaile varundada ja anda järgmise käsu:

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

    Või kuidas see Cygwiniga Windows-arvutisse näeks:

    rsync -a / cygdrive / c / failid / / cygdrive / e / failid /

    Päris lihtne, ja sel hetkel ei ole rsyncit tegelikult vaja kasutada, sest sa võiksid failid lihtsalt lohistada. Kui teie teises kõvakettal on juba mõned failid ja vajate lihtsalt värskendatud versioone ja faile, mis on loodud pärast viimast sünkroonimist, on see käsk mugav, sest see saadab uued andmed kõvakettale. Suured failid ja eriti failide ülekandmine interneti kaudu on suur asi.

    Failide varundamine välisele kõvakettale ja seejärel kõvaketta säilitamine samas kohas, kus teie arvuti on, on väga halb mõte, nii et vaatame, mida ta vajab failide internetis teisele arvutile saatmise alustamiseks ( üks, mille olete rentinud, pereliikme vms).

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

    Ülaltoodud käsk saadaks failid teisele arvutile, mille IP-aadress on 10.1.1.1. See kustutaks kõrvalised failid sihtkohast, mida allikate kataloogis enam ei eksisteeri, edastatakse ülekantavad failinimed, nii et teil on ettekujutus sellest, mis toimub, ja tunneli rsync SSH kaudu portaalis 12345.

    The -a -v -e - tühista lülitid on mõned kõige elementaarsemad ja tavaliselt kasutatavad; kui sa seda õpetust loed, peaksite neist juba palju teadma. Lähme üle teiste lülitite, mida mõnikord ignoreeritakse, kuid uskumatult kasulik:

    --edusamme - See lüliti võimaldab meil näha iga faili ülekande edenemist. See on eriti kasulik suurte failide ülekandmiseks interneti vahendusel, kuid saab väikesed failid kiirvõrgus üle anda mõttetu hulga informatsiooni.

    Rsync käsk koos --edusamme lülituda, kui varukoopia on käimas:

    --osaline - See on veel üks lüliti, mis on eriti kasulik suurte failide ülekandmiseks interneti kaudu. Kui rsync katkeb mingil põhjusel failiedastuse keskel, hoitakse osaliselt ülekantud fail sihtkataloogis ja ülekanne jätkub seal, kus rsync-käsk uuesti käivitatakse, kui see jäi välja. Suurte failide ülekandmisel internetist (näiteks paar gigabaiti) pole midagi muud hullemat kui mõne teise Interneti katkestuse, sinise ekraani või inimvea väljalülitamine failiedastuse ülesvõtte tegemiseks ja uuesti alustamine.

    -P - see lüliti ühendab --edusamme ja --osaline, nii kasutage seda ja see teeb teie rsync käsu väikeseks.

    -z või --kompress - See lüliti muudab faili rsync failiandmete ülekandmise ajal, vähendades sihtkohta jõudmiseks saadetavate andmete hulka. See on tegelikult üsna tavaline lüliti, kuid ei ole kaugeltki oluline, vaid annab teile tõesti kasu aeglaste ühenduste vahelistest ülekannetest ja see ei tee midagi järgmist tüüpi failide jaoks: 7z, avi, bz2, deb, g, z iso, jpeg, jpg, mov, mp3, mp4, ogg, rpm, tbz, tgz, z, zip.

    -h või --inimloetav - Kui kasutate --edusamme lüliti, tahate kindlasti seda kasutada. See tähendab, et kui te ei soovi muundada baiti baidi vahele. The -h lülitab kõik väljundnumbrid inimloetavatesse vormingutesse, nii et saate tegelikult mõista ülekantavate andmete hulka.

    -n või --kuivkäivitus - See lüliti on oluline, et teada saada, millal te esimest korda kirjutate oma rsync-skripti ja katsetate seda. See täidab prooviperioodi, kuid ei tee tegelikult mingeid muudatusi - võimalikud muudatused väljastatakse endiselt tavapäraselt, nii et saate kõike lugeda ja veenduda, et enne skripti tootmise alustamist on see korras.

    -R või --sugulane - Seda lülitit tuleb kasutada, kui sihtkataloogi ei ole juba olemas. Me kasutame seda võimalust käesolevas juhendis hiljem, et saaksime sihtmärgikambris katalooge teha kausta nimede ajatemplitega.

    --välistage - Seda lülitit kasutatakse linkide eemaldamiseks nimekirjast, mis sisaldab kataloogideid, mida te ei soovi varundada. See vajab lihtsalt lihttekstifaili, millel on igas reas kataloogi või faili tee.

    --kaasas - Sarnane --välistage, kuid see seostub failidega, mis sisaldavad katalooge ja failide teed, mida soovite varundada.

    --statistika - Mitte mingil moel ei ole oluline lüliti, kuid kui sa oled sysadmin, siis võib olla mugav teada iga varukoopia üksikasjalikku statistikat, nii et saate jälgida võrgu ja selle kaudu saadetava liikluse hulka..

    --logifail - See võimaldab saata rsync-väljundi logifaili. Soovitame seda kindlasti automatiseeritud varukoopiate tegemiseks, kus te ei ole valmis väljundit ise lugema. Andke logifailid alati vabal ajal korduvalt, et veenduda, et kõik toimib korralikult. Samuti on see sysadmini kasutamisel väga oluline lüliti, nii et sa ei jäta mõtlema, kuidas teie varukoopiad ebaõnnestusid, kui olete internilt vastutav.

    Vaatame nüüd meie rsync käsku, kui meil on veel mõned lülitid:

    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 /

    Käsk on endiselt üsna lihtne, kuid me ei ole ikka veel loodud korralikku varukoopia lahendust. Kuigi meie failid on nüüd kahes erinevas füüsilises asukohas, ei tee see varukoopia meile midagi andmekao peamiste põhjuste eest: inimviga.

    Snapshot Backups

    Kui kustutate faili kogemata, rikub viirus mõnda teie faili või juhtub midagi muud, mille korral teie faile soovimatult muudetakse ja seejärel käivitate oma rsynci varukoopia, teie varundatud andmed kirjutatakse üle soovimatute muudatustega. Kui selline asi juhtub (mitte siis, kui, siis millal), ei teinud teie varunduslahendus midagi, et kaitsta teid teie andmete kadumise eest.

    Rsynci looja mõistis selle ja lisas --varukoopia ja --backup-dir argumendid, et kasutajad saaksid kasutada diferentsiaalseid varukoopiaid. Esimene näide rsynci veebisaidil näitab skripti, kus täielik varukoopia käivitatakse iga seitsme päeva tagant ja seejärel nende failide muudatused varundatakse iga päev eraldi kataloogides. Selle meetodi probleem on see, et failide taastamiseks peate need seitse korda tõhusalt taastama. Lisaks on enamik geeksid varukoopiaid mitu korda päevas, nii et teil oleks igal ajal hõlpsasti olemas 20 + erinevat varukataloogi. Mitte ainult failide taastamine on nüüd valu, kuid isegi ainult teie varundatud andmete vaatamine võib olla äärmiselt aeganõudev - peate teadma, et viimast korda muudeti faili, et leida selle viimane varundatud koopia. Lisaks sellele on see ebaefektiivne ainult üks kord nädalas (või mõnel juhul isegi harvemini) varukoopiate tegemisel.

    Snapshot varukoopiaid päästmiseks! Snapshot varukoopiad ei ole midagi muud kui inkrementaarsed varukoopiad, kuid nad kasutavad algallika failistruktuuri säilitamiseks hardlinks. See võib olla raske oma pea ümber keerata, nii et vaatame näite.

    Pange tähele, et meil on varukoopia skript, mis varundab automaatselt meie andmed iga kahe tunni tagant. Kui rsync seda teeb, nimetab ta iga varukoopia vormingus: Backup-month-day-year-year.

    Seega oleks meil lõpuks tavaline päev, mis sisaldab meie kataloogi kaustu:

    Nende kataloogide läbimisel näete iga faili lähtekataloogist täpselt nii, nagu see oli sel ajal. Kuid kahe kataloogi puhul ei oleks dubleeritud. rsync saavutab selle kõva sidumise abil --link-dest = DIR argument.

    Loomulikult peame nende kenasti ja korralikult dateeritud kataloogide nimedega natuke oma rsync-skripti lihvima. Vaatame seda, mida see varukoopia lahenduse tegemiseks võtab, ja selgitame skripti üksikasjalikumalt:

    #! / bin / bash

    #copy old time.txt kell time2.txt

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

    #overwrite vana time.txt fail uue ajaga

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

    #kogige logifail

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

    #rsync käsk

    rsync -avzhPR --chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r --delete - stats --log-file = ~ / backup / rsync-'date + ”% F-% I% p ''. log --exclude-from '~ / välistada.txt' --link-dest = / home / geek2 / files / 'kass ~ / backup / time2.txt' -e 'ssh -p 12345' / home / geek / files / [email protected]: / home / geek2 / files / 'kuupäev +'% F-% I% p '' /

    # ärge unustage logifaili skriptida ja varundada

    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

    See oleks tüüpiline hetktõmmise rsync-skript. Juhul, kui me teie kusagil kaotasime, lõhustame seda tükeldatult:

    Meie skripti esimene rida kopeerib time.txt sisu ajast2.txt. Jah toru peab kinnitama, et me tahame faili üle kirjutada. Järgmisena võtame praeguse aja ja paneme selle time.txt. Need failid on hiljem mugav.

    Järgmine rida teeb rsync logifaili, nimetades seda rsync-date.log (kus kuupäev on tegelik kuupäev ja kellaaeg).

    Nüüd, keeruline rsync käsk, mida oleme teid hoiatanud:

    -avzhPR, -e, --delete, --stats, --log-file, - välja arvatud, --link-dest - Lihtsalt lülitid, millest me varem rääkisime; sirvige üles, kui vajate täiendõpet.

    --chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r - Need on sihtkoha kataloogi õigused. Kuna me teeme selle kataloogi meie rsync-skripti keskel, peame määrama õigused, et meie kasutaja saaks sellele faile kirjutada.

    Kuupäeva ja kassi käskude kasutamine

    Me läheme üle igale kuupäevale ja kassi käsule rsync käsu sees, nii nagu nad esinevad. Märkus: oleme teadlikud, et selle funktsiooni saavutamiseks on muid võimalusi, eriti muutujate deklareerimisel, kuid käesoleva juhendi puhul oleme otsustanud seda meetodit kasutada.

    Logifail on määratud järgmiselt:

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

    Teise võimalusena oleksime võinud seda nimetada järgmiselt:

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

    Mõlemal juhul, --logifail käsk peaks leidma eelnevalt loodud dateeritud logifaili ja kirjutama sellele.

    Lingi sihtkoha fail on määratud järgmiselt:

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

    See tähendab, et --link-dest käsule antakse eelmise varukoopia kataloog. Kui töötame iga kahe tunni tagant varukoopiaid ja selle skripti käivitamise ajal on see kell 16:00, siis --link-dest käsk otsib kataloogi, mis on loodud kell 14:00, ja edastab ainult pärast seda muutunud andmeid (kui neid on).

    Et korrata, kopeeritakse time.txt skripti alguses time2.txt-i, nii et --link-dest käsk võib seda aega hiljem viidata.

    Sihtkataloog on määratud järgmiselt:

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

    See käsk lihtsalt paneb lähtefailid kataloogi, millel on praeguse kuupäeva ja kellaaja pealkiri.

    Lõpuks kontrollime, et logifaili koopia oleks varukoopia sees.

    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

    Me kasutame pordis 12345 turvalist koopiat, et võtta rsync logi ja paigutada see õigesse kataloogi. Õige logifaili valimiseks ja veendumiseks, et see jõuab õigesse kohta, tuleb faili time.txt viidata kassi käsuga. Kui te ei tea, miks me otsustasime time.txt kassi asemel kasutada kuupäeva käsku, siis on see, et rsync-i käigu ajal oleks võinud ilmneda palju aega, nii et meil oleks õige aeg varem koostatud tekstidokument.

    Automaatika

    Rsync-skripti automatiseerimiseks kasutage Linuxis Croni või Windowsi Task Schedulerit. Üks asi, mida peate olema ettevaatlik, tagab, et te lõpetate kõik jooksvad rsync-protsessid enne uue jätkamist. Tegumi ajastaja näib, et sulgeb kõik juba töötavad instantsid automaatselt, kuid Linuxi jaoks peate olema veidi loomingulisem.

    Enamik Linuxi distributsioone võib kasutada käsku pkill, seega lisage kindlasti oma rsync-skripti algusse järgmine:

    pkill -9 rsync

    Krüpteerimine

    Ei, me pole veel teinud. Meil on lõpuks fantastiline (ja tasuta!) Varunduslahendus, kuid kõik meie failid on endiselt vargusele vastuvõtlikud. Loodetavasti varundate oma failid mõnele kohale sadu miili kaugusel. Ükskõik kui turvaline on see kaugel paiknev, on vargus ja häkkimine alati probleemiks.

    Meie näidetes oleme tunnelinud kogu meie rsync-liikluse SSH kaudu, nii et see tähendab, et kõik meie failid on krüpteeritud sihtkohta jõudmisel. Siiski peame veenduma, et sihtkoht on sama turvaline. Pidage meeles, et rsync krüpteerib teie andmed ainult selle edastamise ajal, kuid failid on oma sihtkohta jõudmisel laiaulatuslikud..

    Üks rsynci parimaid omadusi on see, et see edastab ainult iga faili muudatused. Kui teil on kõik failid krüpteeritud ja teha üks väike muudatus, tuleb kogu fail uuesti edastada krüpteerimise tulemusena, mis muudab kõik andmed pärast mis tahes muudatust juhuslikult..

    Sel põhjusel on kõige parem / lihtsam kasutada teatud tüüpi ketta krüpteerimist, näiteks BitLocker for Windows või dm-crypt Linuxile. Nii on teie andmed varguse korral kaitstud, kuid faile saab edastada rsynci abil ja teie krüpteerimine ei takista selle toimimist. On ka teisi võimalusi, mis toimivad sarnaselt rsync'ile või isegi rakendavad mõnda vormi, nagu näiteks kahekordistus, kuid neil puuduvad mõned funktsioonid, mida rsync pakub.

    Pärast seda, kui olete oma hetktõmmise varukoopiad väljaspool saidi asukohta seadistanud ja krüpteerinud oma allika- ja sihtkoha kõvakettad, andke endale patendi taga, et hallata rsyncit ja rakendada kõige lollikindlat andmete varundamise lahendust.