Pagrindinis » kaip » Duomenų sinchronizavimo su „Rsync“ vadovas

    Duomenų sinchronizavimo su „Rsync“ vadovas

    Rsync protokolas gali būti gana paprastas naudoti įprastoms atsarginių kopijų kūrimo / sinchronizavimo užduotims, tačiau kai kurios iš pažangesnių funkcijų gali jus nustebinti. Šiame straipsnyje mes parodysime, kaip net didžiausi duomenų kaupėjai ir atsarginiai entuziastai gali naudoti rsync kaip vieną sprendimą visiems jų duomenų atleidimo poreikiams..

    Įspėjimas: tik „Advanced Geeks“

    Jei sėdi ten, galvodami: „Ką gi yra rsync?“ Arba „Aš naudoju tik rsync tikrai paprasta užduotis“, galbūt norėsite patikrinti mūsų ankstesnį straipsnį apie tai, kaip naudoti rsync, kad atsarginės kopijos duomenys būtų teikiami „Linux“ Įvadas į „rsync“, vedantis jus per diegimą ir demonstruoja daugiau pagrindinių funkcijų. Kai turėsite tvirtą supratimą apie tai, kaip naudoti rsync (sąžiningai, tai nėra toks sudėtingas) ir esate patenkinti Linux terminalu, esate pasiruošę pereiti prie šio išplėstinio vadovo.

    „Rsync“ paleidimas „Windows“ sistemoje

    Pirma, leiskite mūsų „Windows“ skaitytuvams tame pačiame puslapyje kaip ir mūsų „Linux“ guru. Nors „rsync“ yra sukurta veikti „Unix“ sistemose, nėra jokios priežasties, kad jūs negalėtumėte ją naudoti taip pat lengvai „Windows“ sistemoje. „Cygwin“ gamina nuostabią „Linux“ API, kurią galime naudoti norėdami paleisti „rsync“, todėl pereikite į savo svetainę ir parsisiųskite 32 bitų arba 64 bitų versiją, priklausomai nuo jūsų kompiuterio.

    Montavimas yra paprastas; galite išsaugoti visas parinktis pagal jų numatytas reikšmes, kol pasieksite ekraną „Pasirinkite paketus“.

    Dabar jums reikia atlikti tuos pačius veiksmus, kaip Vim ir SSH, tačiau paketai bus atrodyti šiek tiek kitaip, kai eisite pasirinkti juos, todėl čia yra keletas ekrano kopijų:

    Vim diegimas:

    SSH diegimas:

    Pasirinkę šiuos tris paketus, spustelėkite toliau, kol baigsite diegimą. Tada galite atidaryti „Cygwin“ spustelėję piktogramą, kurią diegimo programa įdiegė darbalaukyje.

    rsync komandos: paprasta

    Dabar, kai „Windows“ naudotojai yra tame pačiame puslapyje, pažiūrėkime į paprastą rsync komandą ir parodysime, kaip kai kurių pažangių jungiklių naudojimas gali greitai padaryti jį sudėtingesnį.

    Tarkime, kad turite daug failų, kuriems reikia atsarginių kopijų - kas šių dienų nėra? Įjunkite nešiojamąjį standųjį diską, kad galėtumėte atsarginę kopiją savo kompiuterio failams ir išduoti šią komandą:

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

    Arba, kaip jis atrodys „Windows“ kompiuteryje su „Cygwin“:

    rsync -a / cygdrive / c / failai / / cygdrive / e / failai /

    Gana paprasta, ir tuo momentu tikrai nereikia naudoti rsync, nes galite tiesiog vilkti ir nuleisti failus. Tačiau, jei kitame standžiajame diske jau yra keletas failų ir tiesiog reikia atnaujintų versijų ir failų, kurie buvo sukurti po paskutinio sinchronizavimo, ši komanda yra patogi, nes ji tik siunčia naujus duomenis į standųjį diską. Su dideliais failais ir ypač perkeliant failus internetu, tai yra didelis dalykas.

    Atsarginių failų kopijavimas į išorinį standųjį diską ir kietojo disko laikymas toje pačioje vietoje, kur yra jūsų kompiuteris, yra labai bloga idėja, todėl pažiūrėkime, ko reikia norint pradėti siųsti failus internetu kitame kompiuteryje ( vienas, kurį išsinuomojote, šeimos nario ir tt).

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

    Pirmiau minėta komanda atsiųs jūsų failus į kitą kompiuterį, kurio IP adresas yra 10.1.1.1. Jis pašalintų pašalinius failus iš paskirties vietos, kuri nebėra šaltinio kataloge, išvestys perkeliami failų pavadinimai, kad galėtumėte suprasti, kas vyksta, ir tunelio rsync per SSH prievadą 12345.

    The -a -v-e - ištrinti jungikliai yra vieni svarbiausių ir dažniausiai naudojami; jei jau skaitote šią pamoką, jau turėtumėte žinoti apie juos daug. Eikime per kitus jungiklius, kurie kartais ignoruojami, bet neįtikėtinai naudingi:

    --progresas - Šis jungiklis leidžia mums matyti kiekvieno failo perkėlimo eigą. Tai ypač naudinga perduodant didelius failus per internetą, bet gali perduoti beprasmį informacijos kiekį, kai tik perkeliate mažus failus per sparčią tinklą.

    Rsync komanda su --progresas perjungti, kai vykdoma atsarginė kopija:

    --dalinis - Tai dar vienas jungiklis, kuris yra ypač naudingas perduodant didelius failus internetu. Jei rsync dėl bet kokios priežasties failo perdavimo metu nutrūksta, iš dalies perduotas failas yra laikomas paskirties kataloge ir perkėlimas tęsiamas ten, kur jis išjungtas, kai rsync komanda vėl vykdoma. Perkeliant didelius failus per internetą (pvz., Pora gigabaitų), nieko blogiau nei kelis antrus interneto išjungimus, mėlynas ekranas arba žmogaus klaidos išvengia failo perkėlimo ir vėl turėsite pradėti iš naujo.

    -P - šis jungiklis sujungia --progresas ir --dalinis, taigi naudokite jį, o tai padarys jūsų rsync komandą nedideliu neateriu.

    -z arba --suspausti - Šis jungiklis leis rsync suspausti failų duomenis, kai jie bus perduodami, taip sumažinant duomenų kiekį, kuris turi būti siunčiamas į paskirties vietą. Tai iš tikrųjų gana dažnas jungiklis, bet toli gražu ne būtinas, tik tikrai naudingas jums pervedimams tarp lėto ryšio, ir nieko nedaro dėl šių tipų failų: 7z, avi, bz2, deb, g, z iso, jpeg, jpg, mov, mp3, mp4, ogg, rpm, tbz, tgz, z, zip.

    -h arba --suprantamas žmogui - Jei naudojate --progresas jungiklį, jūs tikrai norite naudoti ir šį. Tai yra, jei nenorite konvertuoti baitų į megabaitus. The -h jungiklis konvertuoja visus išvestus numerius į žmogaus skaitymo formatą, todėl iš tikrųjų galite suprasti perduodamų duomenų kiekį.

    -n arba --sausas - Šis jungiklis yra būtinas norint žinoti, kada pirmą kartą rašote rsync scenarijų ir išbandote. Jis atlieka bandomąjį bandymą, bet iš tikrųjų nekeičia jokių pakeitimų - tikėtini pakeitimai vis dar išvedami kaip įprasta, todėl galite perskaityti viską ir įsitikinti, kad jis atrodo gerai, prieš pradedant scenarijaus gamybą.

    -R arba --giminaitis - Šis jungiklis turi būti naudojamas, jei paskirties katalogo jau nėra. Šią parinktį naudosime vėliau šiame vadove, kad galimų įrenginių katalogus galėtume padaryti su laiko žymenimis aplankų pavadinimuose.

    --neįtraukti - Šis jungiklis naudojamas nuorodai į išskyrimo sąrašą, kuriame yra katalogų takų, kurių nenorite kurti. Tai tiesiog reikia paprasto teksto failo su katalogo ar failo keliu kiekvienoje eilutėje.

    --įtraukti nuo - Panašus į --neįtraukti, tačiau jis susieja failą, kuriame yra katalogų ir failų takų, kuriuos norite kurti.

    --statistika - Ne tikrai svarbi perjungimo priemonė bet kokiu būdu, bet jei esate sysadmin, tai gali būti naudinga žinoti išsamią kiekvieno atsarginės kopijos statistiką, kad galėtumėte stebėti srautą, siunčiamą per jūsų tinklą ir tokį.

    --žurnalo failas - Tai leidžia siųsti rsync išvestį į žurnalo failą. Mes tikrai rekomenduojame tai automatizuotoms atsarginėms kopijoms, kuriose jūs neturite, kad patys skaitytumėte išvestį. Visada savo laisvalaikį visada pateikite žurnalo failus, kad įsitikintumėte, jog viskas veikia tinkamai. Be to, tai labai svarbus jungiklis, skirtas naudoti „sysadmin“, todėl nenorite stebėtis, kaip nepavyko padaryti atsarginių kopijų, kai palikote mokytoją.

    Pažvelkime į mūsų rsync komandą dabar, kai turime keletą papildomų jungiklių:

    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 /

    Komanda vis dar gana paprasta, tačiau mes vis dar nesukūrėme tinkamo atsarginio sprendimo. Nors mūsų failai dabar yra dviejose skirtingose ​​fizinėse vietose, ši atsarginė kopija neleidžia mums apsaugoti nuo vienos iš pagrindinių duomenų praradimo priežasčių: žmogaus klaida.

    Snapshot atsarginės kopijos

    Jei netyčia ištrynėte failą, virusas sugadins visus jūsų failus, arba kas nors kitas įvyksta, kai jūsų failai yra nepageidaujamai pakeisti, o tada paleisite „rsync“ atsarginį scenarijų, atsarginiai duomenys perrašomi nepageidaujamų pakeitimų. Kai toks dalykas įvyksta (ne tada, kai, bet kada), jūsų atsarginės kopijos sprendimas nieko nepadėjo, kad apsaugotų jus nuo duomenų praradimo.

    Rsync kūrėjas tai suprato ir pridėjo --atsarginę kopiją ir --atsarginis-rež argumentai, kad vartotojai galėtų paleisti diferencijuotas atsargines kopijas. Pirmasis „rsync“ tinklalapio pavyzdys rodo scenarijų, kuriame visą septynias dienas vykdoma visa atsarginė kopija, o tų failų pakeitimai kasdien atliekami atskiruose kataloguose. Šio metodo problema yra ta, kad norint susigrąžinti failus, turite veiksmingai atkurti juos septynis kartus. Be to, dauguma geekų savo atsargines kopijas atlieka kelis kartus per dieną, todėl bet kuriuo metu galite lengvai turėti 20 + skirtingų atsarginių katalogų. Ne tik atkuriami failai dabar yra skausmas, bet net tik peržiūrint jūsų atsargines kopijas, gali būti labai daug laiko - turėtumėte žinoti, kada paskutinį kartą buvo pakeistas failas, kad rastumėte naujausią atsarginę kopiją. Be to, tai neveiksminga paleisti tik kas savaitę (ar net retiau kai kuriais atvejais) atsargines kopijas.

    Snapshot atsarginės kopijos gelbėjimui! „Snapshot“ atsarginės kopijos yra tik papildomos atsarginės kopijos, tačiau jos naudoja kietuosius ryšius, kad išsaugotų pradinio šaltinio failų struktūrą. Tai gali būti sunku apvynioti galvą iš pradžių, todėl pažvelkime į pavyzdį.

    Pretend mes turime atsarginį scenarijų, kuris automatiškai remia mūsų duomenis kas dvi valandas. Kai rsync tai daro, ji nurodo kiekvieną atsarginę kopiją: „Backup-month-day-year-year-time“.

    Taigi, pabaigoje tipišką dieną mes turėtume aplankų sąrašą mūsų paskirties kataloge:

    Kai važiuojate bet kurį iš šių katalogų, kiekvieną failą iš šaltinio katalogo pamatysite tiksliai taip, kaip buvo tuo metu. Vis dėlto dviejuose dviejuose kataloguose nebūtų dublikatų. „rsync“ tai pasiekia naudodama „hardlinking“ per „ --link-dest = DIR argumentas.

    Žinoma, norint, kad šie gražiai ir tvarkingai pavadinti katalogų pavadinimai, mes turime šiek tiek padidinti savo rsync scenarijų. Pažvelkime į tai, ką reikia, kad būtų atliktas toks atsarginis sprendimas, ir tada išsamiau paaiškinsime scenarijų:

    #! / bin / bash

    #copy old time.txt į time2.txt

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

    #overwrite senas time.txt failas su nauju laiku

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

    #kurkite žurnalo failą

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

    #rsync komanda

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

    # Nepamirškite nuskaityti žurnalo failo ir įdėti jį į atsarginę kopiją

    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

    Tai būtų tipiškas momentinio vaizdo rsync scenarijus. Jei mes kažkur praradome, išpjaukime jį gabalas:

    Pirmoji mūsų scenarijaus eilutė kopijuoja time.txt turinį į time2.txt. Taip vamzdis patvirtina, kad norime perrašyti failą. Be to, mes laikomės dabartinio laiko ir įkeliame jį į time.txt. Šie failai bus naudingi vėliau.

    Kita eilutė daro rsync žurnalo failą, pavadindama ją rsync-date.log (kur data yra tikroji data ir laikas).

    Dabar sudėtinga rsync komanda, kurią mes įspėjome apie:

    -avzhPR, -e, --delete, --stats, --log-file, -exclude-from, --link-dest - Tik jungikliai, apie kuriuos kalbėjome anksčiau; slinkite aukštyn, jei reikia atnaujinimo.

    --chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r - Tai yra paskirties katalogo leidimai. Kadangi mes darome šį katalogą rsync scenarijaus viduryje, turime nurodyti leidimus, kad mūsų vartotojas galėtų į jį įrašyti failus.

    Datos ir katės komandų naudojimas

    Mes eisime per kiekvieną datos ir katės komandų naudojimą komandoje rsync tokia tvarka, kokia jie įvyksta. Pastaba: žinome, kad yra kitų būdų, kaip atlikti šią funkciją, ypač naudojant kintamuosius, tačiau šiame vadove nusprendėme naudoti šį metodą.

    Žurnalo failas nurodytas kaip:

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

    Arba galėjome jį nurodyti kaip:

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

    Bet kuriuo atveju, --žurnalo failas komanda turėtų sugebėti surasti anksčiau sukurtą datuotą žurnalo failą ir rašyti.

    Nuorodos paskirties failas nurodytas kaip:

    --link-dest = / home / geek2 / files / „katė ~ / atsarginė kopija / time2.txt“

    Tai reiškia, kad --nuoroda-dest komandai suteikiamas ankstesnės atsarginės kopijos katalogas. Jei mes atliekame atsargines kopijas kas dvi valandas, o 4 val --nuoroda-dest komanda ieško katalogo, sukurto 2:00 val., ir perduoda tik nuo to laiko pasikeitusius duomenis (jei yra).

    Norėdami pakartoti, kodėl time.txt yra nukopijuotas į time2.txt skripto pradžioje, todėl --nuoroda-dest komanda gali nurodyti tą laiką vėliau.

    Paskirties katalogas yra nurodytas kaip:

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

    Ši komanda paprasčiausiai įkelia šaltinio failus į katalogą, kuriame yra dabartinės datos ir laiko pavadinimas.

    Galiausiai, mes užtikriname, kad atsarginės kopijos viduje būtų patalpinta žurnalo failo kopija.

    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

    Naudojame saugią kopiją 12345 porte, kad galėtume paimti rsync žurnalą ir įdėti jį į tinkamą katalogą. Norėdami pasirinkti tinkamą žurnalo failą ir įsitikinti, kad jis pasiekia tinkamą vietą, failas time.txt turi būti nurodomas per katės komandą. Jei įdomu, kodėl nusprendėme cat.txt katės vietoj tiesiog naudoti datą komandą, tai todėl, kad rsync komanda veikė daug laiko, kad įsitikintume, jog turime tinkamą laiką, tik katė dokumentą, kurį sukūrėme anksčiau.

    Automatika

    Automatizuokite rsync scenarijų naudodami „Linux“ arba „Windows“ užduočių planavimo priemonę. Vienas dalykas, kurį turite būti atsargus, įsitikina, kad prieš tęsdami naują darbą, baigiate bet kokius šiuo metu veikiančius rsync procesus. Atrodo, kad užduočių planuotojas uždaro jau veikiančius egzempliorius automatiškai, bet „Linux“ turėsite būti šiek tiek kūrybingesnis.

    Dauguma „Linux“ platinimo programų gali naudoti „pkill“ komandą, todėl būtinai į „rsync“ scenarijaus pradžią pridėkite:

    pkill -9 rsync

    Šifravimas

    Ne, dar nepadarėme. Mes galiausiai turime fantastišką (ir nemokamą!) Atsarginį sprendimą, tačiau visi mūsų failai vis dar yra jautrūs vagystei. Tikimės, kad failų kopijavimas į kai kurias vietas yra šimtus mylių. Nesvarbu, kaip saugu, kad tolima vieta, vagystė ir įsilaužimas visada gali būti problema.

    Mūsų pavyzdžiuose mes perkrovome visą mūsų rsync srautą per SSH, todėl tai reiškia, kad visi mūsų failai yra užšifruoti, kai jie vyksta į savo paskirties vietą. Tačiau turime įsitikinti, kad paskirties vieta yra tokia pat saugi. Atminkite, kad rsync šifruoja tik jūsų duomenis, kai jie yra perduodami, tačiau failai yra plačiai atidaryti, kai jie pasiekia savo tikslą.

    Vienas iš geriausių „rsync“ savybių yra tas, kad jis perduoda tik kiekvieno failo pakeitimus. Jei turite visus savo failus užšifruotus ir atliksite vieną nedidelį pakeitimą, visas failas turės būti perduodamas, kai šifravimas bus visiškai atsitiktinis visais duomenimis po bet kokio pakeitimo.

    Dėl šios priežasties geriausia / lengviausia naudoti tam tikrą diskų šifravimą, pvz., „BitLocker“, skirta „Windows“ arba „dm-crypt“, skirtą „Linux“. Tokiu būdu jūsų duomenys yra apsaugoti vagystės atveju, tačiau failus galima perduoti naudojant „rsync“ ir jūsų šifravimas netrukdys jos veikimui. Yra ir kitų variantų, kurie veikia panašiai kaip rsync arba netgi įgyvendina tam tikrą jos formą, pvz., Dvigubumą, tačiau jiems trūksta kai kurių funkcijų, kurias rsync turi pasiūlyti.

    Sukūrę momentinės kopijos atsargines kopijas ne vietoje esančioje vietoje ir užšifravę šaltinio ir paskirties kietuosius diskus, duokite sau patį, kad galėtumėte įsisavinti rsync ir įdiegti įmanomą patikimiausią duomenų atsarginę kopiją.