Sinchronizuojant duomenis su "Rsync" vadovas "Ne pradedantiesiems"

Turinys:

Sinchronizuojant duomenis su "Rsync" vadovas "Ne pradedantiesiems"
Sinchronizuojant duomenis su "Rsync" vadovas "Ne pradedantiesiems"

Video: Sinchronizuojant duomenis su "Rsync" vadovas "Ne pradedantiesiems"

Video: Sinchronizuojant duomenis su
Video: How To Find Website IP Address Online - YouTube 2024, Balandis
Anonim
"Rsync" protokolas gali būti gana paprastas naudoti įprastoms atsarginės kopijos / sinchronizacijos darbams, tačiau kai kurios iš tobuliausių funkcijų gali jus nustebinti. Šiame straipsnyje mes parodysime, kaip net didžiausi duomenų kaupikliai ir atsarginių kopijų entuziastai gali naudoti "rsync" kaip vieną sprendimą dėl visų jų duomenų perkėlimo poreikių.
"Rsync" protokolas gali būti gana paprastas naudoti įprastoms atsarginės kopijos / sinchronizacijos darbams, tačiau kai kurios iš tobuliausių funkcijų gali jus nustebinti. Šiame straipsnyje mes parodysime, kaip net didžiausi duomenų kaupikliai ir atsarginių kopijų entuziastai gali naudoti "rsync" kaip vieną sprendimą dėl visų jų duomenų perkėlimo poreikių.

Įspėjimas: tik pažengę geeks

Jei tu sėdi, mąstydamas "Kas yra rsync?" Arba "Aš naudoju rsync tik labai paprastoms užduotims", galbūt norėsite sužinoti mūsų ankstesnį straipsnį apie tai, kaip naudoti rsync, norėdami atsarginę kopiją savo duomenis "Linux" įvadas į rsync, padės jums įdiegti ir demonstruoja daugiau pagrindinių funkcijų. Kai turėsite tvirtą supratimą apie tai, kaip naudoti rsync (tiesa, tai nėra toks sudėtingas) ir patogu naudoti "Linux" terminalą, esate pasiruošę pereiti prie šio išplėstinio vadovo.

"Rsync" paleidimas "Windows" sistemoje

Pirma, leiskime "Windows" skaitytuvus tame pačiame puslapyje kaip mūsų "Linux" guru. Nors "rsync" yra sukurtas veikti "Unix" sistemose, nėra jokios priežasties, dėl kurios neturėtumėte to naudoti taip pat lengvai "Windows" sistemoje. "Cygwin" gamina nuostabų "Linux" API, kurį galime naudoti paleisti "rsync", todėl eikite į savo svetainę ir atsisiųskite 32 bitų arba 64 bitų versiją, priklausomai nuo jūsų kompiuterio.

Įdiegimas yra paprastas; galite išsaugoti visas parinktis pagal numatytas vertes, kol pateksite į ekraną "Pasirinkti paketus".

Dabar jūs turite atlikti tuos pačius veiksmus Vim ir SSH, tačiau paketai skirsis šiek tiek kitaip, kai jūs einate juos pasirinkti, taigi čia pateikiami keli ekrano paveikslėliai:
Dabar jūs turite atlikti tuos pačius veiksmus Vim ir SSH, tačiau paketai skirsis šiek tiek kitaip, kai jūs einate juos pasirinkti, taigi čia pateikiami keli ekrano paveikslėliai:

"Vim" diegimas:

SSH diegimas:
SSH diegimas:
Pasirinkę tuos tris paketus, spauskite toliau, kol baigsite diegti. Tada galite atidaryti Cygwin, spustelėdami piktogramą, kurią įdiegėjas įdėjo į savo darbalaukį.
Pasirinkę tuos tris paketus, spauskite toliau, kol baigsite diegti. Tada galite atidaryti Cygwin, spustelėdami piktogramą, kurią įdiegėjas įdėjo į savo darbalaukį.

Komandos rsync: nuo paprastos iki patobulintos

Dabar, kai "Windows" vartotojai yra tame pačiame puslapyje, pažiūrėkime į paprastą komandą rsync ir parodysime, kaip kai kurių išplėstinių jungiklių naudojimas gali greitai susitvarkyti.

Tarkime, kad turite keletą failų, kuriems reikia atsarginių kopijų - kas šiuo metu nėra? Jūs įjunkite savo nešiojamąjį kietąjį diską, kad galėtumėte kopijuoti savo kompiuterio failus ir išduoti šią komandą:

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

Arba, kaip atrodys "Windows" kompiuteris su "Cygwin":

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

Gana paprasta, ir tuo metu tikrai nereikia naudoti rsync, nes galite tik vilkti ir paleisti failus. Tačiau jei jūsų kituose kietajame diske jau yra kai kurie failai ir tiesiog reikia atnaujintų versijų ir failų, sukurtų po paskutinio sinchronizavimo, ši komanda yra naudinga, nes ji siunčia naujus duomenis tik į kietąjį diską. Su dideliais failais, ypač perduodant failus per internetą, tai yra didelis įvykis.

Failų atsarginių kopijų kūrimas į išorinį standųjį diską, o tada standusis diskas talpinamas tame pačiame kompiuteryje esančioje vietoje yra labai bloga idėja. Taigi pažvelkime, ko reikės, kad pradėtumėte siųsti failus iš interneto į kitą kompiuterį ( vienas, kurį išsinuomojote, šeimos narys ir kt.).

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

Pirmiau nurodyta komanda išsiųs savo failus į kitą kompiuterį su 10.1.1.1 IP adresu. Tai ištrins pašalinius failus iš paskirties vietos, kurios nebeegzistuoja šaltinio kataloge, išvedami perduodamų failų pavadinimai, todėl jūs turite idėją apie tai, kas vyksta, ir tunelį rsync per SSH prievado 12345.

The

-a -v -e --delete

jungikliai yra keletas pagrindinių ir dažniausiai naudojamų; jei jau skaitote šį pamokėlį, jau turėtumėte žinoti apie juos. Peržiūrėkime keletą kitų jungiklių, kurie kartais ignoruojami, bet neįtikėtinai naudingi:

--progress

- Šis jungiklis leidžia mums matyti kiekvieno failo perkėlimo eigą. Tai ypač naudinga perduodant didelius failus per internetą, tačiau gali perduoti nereikalingą kiekį informacijos, kai tik perduodama mažus failus per greitą tinklą.

Komandos rsync su

--progress

perjunkite atsarginę kopiją:

Image
Image

--partial

- Tai dar vienas jungiklis, kuris ypač naudingas perduodant didelius failus per internetą. Jei rsync perduodamas failo perkėlimo viduryje dėl bet kokios priežasties nutraukiamas, iš dalies perkeltas failas yra laikomas paskirties kataloge, o perdavimas yra atnaujinamas, kai jis išjungtas, kai komanda rsync vėl vykdoma. Perduodant didelius failus per internetą (tarkim, pora gigabaitų), nėra nieko blogesnio nei kelias sekundes, kai išjungtas internetas, mėlynas ekranas arba žmogaus klaida pakelia failų perkėlimą ir turi pradėti viską iš naujo.

-P

- šis jungiklis jungiasi

--progress

ir

--partial

todėl naudokite jį, o jūsų komanda rsync šiek tiek trumpesnė.

-z

arba

--compress

- Šis jungiklis sukurs rsync suspaudimo failo duomenis, nes jis perduodamas, sumažinant duomenų, kurie turi būti siunčiami į paskirties vietą, kiekį. Tai iš tiesų yra gana dažnas jungiklis, bet jis toli gražu nėra būtinas, tik iš tiesų jums naudingas perėjimas tarp lėtų jungčių, o tai 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

--human-readable

- Jei naudojate

--progress

perjunkite, jūs tikrai norėsite naudoti tą patį. Tai reiškia, kad, nebent jums patinka konvertuoti baitus į megabaitus skristi. The

-h

jungiklis paverčia visus išvedamus numerius į žmogaus nuskaitomą formą, taigi jūs iš tikrųjų galite suprasti, kiek duomenų yra perduodami.

-n

arba

--dry-run

- Šis jungiklis yra svarbu žinoti, kai pirmą kartą rašote rsync scenarijų ir jį išbandote. Ji atlieka bandomąjį paleidimą, bet iš tikrųjų nieko nekeičia - būsimi pakeitimai vis dar išvedami kaip įprasta, todėl galite viską perskaityti ir įsitikinti, kad jis atrodo gerai, prieš paleidžiant scenarijų į gamybą.

-R

arba

--relative

- Šis jungiklis turi būti naudojamas, jei paskirties kataloge dar nėra. Šį variantą naudosime vėliau šiame vadove, kad galėtume sukurti katalogus tikslinėje mašinoje su laiko žymomis aplankų pavadinimuose.

--exclude-from

- Šis jungiklis naudojamas norint susieti neįtrauktų sąrašų, kuriuose yra katalogų keliai, kurių nenorite sukurti atsargine kopija. Reikia tiesioginio teksto failo su kiekvienos eilutės katalogo ar failo keliu.

--include-from

- Panašus į

--exclude-from

bet jis susiejamas su failu, kuriame yra katalogų ir failų maršrutų duomenys, kuriuos norite atsarginę kopiją.

--stats

- Tai nėra svarbus perjungimas bet kokiu būdu, bet jei esate sysadminas, tai gali būti naudinga žinoti išsamią kiekvienos atsarginės kopijos statistiką, kad galėtumėte stebėti srautą, siunčiamą per jūsų tinklą ir pan.

--log-file

- Tai leidžia išsiųsti rsync išvesties į žurnalo failą. Mes neabejotinai rekomenduojame tai automatinėms atsarginėms kopijoms, kuriose jūs neturite, kad galėtumėte skaityti produkciją patys. Visada darykite žurnalo failus per laisvą laiką, kad įsitikintumėte, jog viskas veikia tinkamai. Be to, tai yra esminis perėjimas prie "sysadmin", taigi jums nereikės nerimauti, kaip sugadinta atsarginės kopijos, kai paliksite stažuotoją.

Pažvelkime į mūsų rsync komandą dabar, kai pridėjome dar keletą 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, bet mes dar nepadarėme tinkamo atsarginio sprendimo. Nors mūsų failai dabar yra skirtingose fizinėse vietose, ši atsarginė kopija nieko nedaro, kad apsaugotų mus nuo vienos pagrindinių duomenų praradimo priežasčių: žmogaus klaidos.

Snapshot atsarginės kopijos

Jei netyčia ištrinate failą, virusas sugadina visus jūsų failus arba kažkas atsitinka, kai jūsų failai yra nepageidaujamai pakeistos, o tada paleidžiate savo rsync atsarginės kopijos scenarijų, jūsų atsarginiai duomenys yra perrašomi su nepageidaujamais pakeitimais. Kai toks dalykas atsiranda (ne tada, bet kada), jūsų atsarginės kopijos sprendimas nieko nedaro, kad apsaugotų jus nuo duomenų praradimo.

"Rsync" kūrėjas suprato tai ir pridėjo

--backup

ir

--backup-dir

argumentai, kad vartotojai galėtų naudoti skirtingas atsargines kopijas. Pirmasis rsync svetainės pavyzdys rodo scenarijų, kuriame kas septynias dienas paleidžiama visa atsarginė kopija, o šių failų pakeitimai kasdien palaikomi atskiruose kataloguose. Problema su šiuo metodu yra tai, kad norint atkurti failus, jūs turite juos veiksmingai atkurti septynis kartus. Be to, dauguma geekskaitų keičia atsargines kopijas keletą kartų per dieną, todėl bet kuriuo metu galite lengvai turėti 20 skirtingų atsarginių kopijų katalogų. Ne tik atkuriami failai yra skausmas, bet netgi ieškant atsarginių duomenų gali būti labai daug laiko - turėtumėte žinoti paskutinį kartą, kai failas buvo pakeistas, kad galėtumėte rasti naujausią atsarginę kopiją. Be to, neefektyviai paleisti tik kartą per savaitę (arba netgi retkarčiais kai kuriais atvejais) papildomas atsargines kopijas.

Atsarginės kopijos atsarginėms kopijoms išsaugoti! "Snapshot" atsarginės kopijos yra ne kas kita, kaip papildomos atsarginės kopijos, tačiau jos naudoja "hardlink", kad išsaugotų pradinio šaltinio failų struktūrą. Pirmiausia tai gali būti sunku apsukti galvą, todėl pažiūrėkime į pavyzdį.

Pretenduosime, kad veikia atsarginis scenarijus, kuris kas dvi valandas automatiškai sukuria atsargines duomenų atsargines kopijas. Kai rsync tai atliks, kiekviena atsarginė kopija bus pavadinta tokia forma: "Backup-month-day-year-time".

Taigi, galų gale tipiška diena, mes turėtume aplankus, esančius mūsų paskirties kataloge, tokį kaip:

Perkeliant bet kurį iš šių katalogų, jūs pamatysite kiekvieną failą iš šaltinio katalogo tiksliai taip, kaip tuo metu. Tačiau dviem katalogais nebus pasikartojančių. rsync tai atlieka naudojant kietąjį ryšį per
Perkeliant bet kurį iš šių katalogų, jūs pamatysite kiekvieną failą iš šaltinio katalogo tiksliai taip, kaip tuo metu. Tačiau dviem katalogais nebus pasikartojančių. rsync tai atlieka naudojant kietąjį ryšį per

--link-dest=DIR

argumentas.

Žinoma, siekiant, kad šie gražiai ir tvarkingai suklijuotų katalogų pavadinimai, mes turime šiek tiek keisti mūsų rsync scenarijų. Pažvelkime į tai, ko reikės, kad įvykdytume tokį atsarginį sprendimą, tada išsamiau paaiškinsime scenarijų:

#!/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

Tai būtų tipiškas "snapshot" rsync scenarijus. Jei kažkur kažką praradę, išmoksime jį gabalėliu:

Pirmoji mūsų scenarijaus eilutė kopija laiko. Txt turinį į time2.txt. Taip vamzdis yra patvirtinti, kad mes norime perrašyti failą. Toliau mes atsižvelgiame į dabartinį laiką ir įtraukiame jį į laiką. Txt. Šie failai bus naudingi vėliau.

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

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

-avzhPR, -e, --delete, --stats, --log-file, --exclude-from, --link-dest

- Tik jungikliai, apie kuriuos mes 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 sukūrėme šį katalogą rsync scenarijaus viduryje, turime nurodyti teises, kad mūsų vartotojas galėtų į jį įrašyti failus.

Datos ir katės komandų naudojimas

Mes ketiname pereiti per kiekvieną datos ir kačių komandų naudojimą rsync komandos viduje, tokiu būdu, kad jie įvyktų. Pastaba: mes žinome, kad yra kitų būdų, kaip atlikti šią funkciją, ypač naudojant kintamųjų deklaravimą, tačiau šiame vadove mes nusprendėme naudoti šį metodą.

Žurnalo failas yra nurodytas kaip:

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

Arba galėtume nurodyti jį kaip:

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

Bet kuriuo atveju,

--log-file

komanda turi sugebėti rasti anksčiau sukurtą žurnalo failą ir parašyti į jį.

Nuorodos paskirties failas yra nurodytas kaip:

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

Tai reiškia, kad

--link-dest

komanda gauna ankstesnės atsarginės kopijos katalogą. Jei atsargines kopijas diegiate kas dvi valandas, o tada, kai mes paleisime šį scenarijų, tai yra 16:00

--link-dest

komanda ieško katalogo, sukurto 14:00 val., ir tik perveda duomenis, kurie pasikeitė nuo tada (jei yra).

Tada pakartoti, kodėl time.txt nukopijuojamas į time2.txt scenarijaus pradžioje, taigi

--link-dest

komanda gali nurodyti tą laiką vėliau.

Paskirties katalogas yra nurodytas kaip:

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

Ši komanda tiesiog nukreipia šaltinio failus į katalogą, turintį dabartinės datos ir laiko pavadinimą.

Galiausiai mes įsitikiname, kad žurnalo failo kopija yra atsarginės kopijos.

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ą prie uosto 12345, kad rsync žurnalas būtų įkeltas į tinkamą katalogą. Norėdami pasirinkti tinkamą žurnalo failą ir įsitikinti, kad jis patenka į reikiamą vietą, failas time.txt turi būti nurodytas per komandos katę. Jei jums įdomu, kodėl mes nusprendėme, kad katė time.txt, o ne tiesiog naudosime datos komandą, tai gali būti, kad rsync komanda paleidžia daug laiko, taigi, norint įsitikinti, kad mes turime tinkamą laiką, mes tiesiog katė anksčiau sukurtą teksto dokumentą.

Automatika

Naudokite "Cron" "Linux" arba "Task Scheduler" sistemoje "Windows", kad automatizuotumėte savo rsync scenarijų. Vienas dalykas, kurį turite būti atsargiems, yra tai, kad prieš baigdami naują versiją baigsite bet kokius rysync procesus. Atrodo, kad užduočių planuoklis automatiškai uždaro bet kokius jau veikiančius egzempliorius, tačiau Linux reikia šiek tiek daugiau kūrybiškumo.

Dauguma "Linux" paskirstymų gali naudoti komandą "pkill", todėl būtinai pridedate toliau nurodytą informaciją į savo "rsync" scenarijaus pradžią:

pkill -9 rsync

Šifravimas

Ne, mes dar nebaigta. Galiausiai turime fantastišką (ir nemokamą!) Atsarginę kopiją, bet visi mūsų failai vis dar yra jautrūs vagystei. Tikimės, kad esate atsargines kopijas savo failus į keletą šimtų mylių. Nesvarbu, ar saugu, kad toli vieta yra, vagystė ir įsilaužimas visada gali būti problemų.

Mūsų pavyzdžiuose mes radome visas mūsų rsync srautą per SSH, taigi visi mūsų failai yra užkoduoti, kai jie yra tranzitu per paskirties vietą. Tačiau turime įsitikinti, kad paskirties vieta yra tokia pat saugi. Turėkite omenyje, kad rsync tik šifruoja jūsų duomenis, kai jie yra perkelti, tačiau failai yra labai atviri, kai jie pasiekia paskirties vietą.

Viena geriausių rsync funkcijų yra ta, kad ji perduoda tik kiekvieno failo pakeitimus. Jei visi jūsų failai yra užšifruoti ir padaryti vieną neesminį pakeitimą, visas failas turės būti retransliuotas dėl šifravimo, kuris visiškai atsitiktinai suskirsto visus duomenis po bet kokio pakeitimo.

Dėl šios priežasties geriausia / lengviausia naudoti tam tikrą disko šifravimo tipą, pvz., "BitLocker for Windows" arba "dm-kript" "Linux". Tokiu būdu jūsų duomenys saugomi vagystės atveju, tačiau failai gali būti perkelti naudojant rsync, o jūsų šifravimas netrukdys jo veikimui. Yra ir kitų variantų, kurie veikia panašiai kaip rsync arba netgi įgyvendina tam tikrą jo formą, pvz., "Duplicity", tačiau trūksta kai kurių funkcijų, kurias rsync gali pasiūlyti.

Po to, kai nustatėte nuotraukų atsargines kopijas į išorinę vietą ir užšifruotumėte savo šaltinio ir paskirties standžiuosius diskus, pasidarykite patį ant nugaros, kad galėtumėte įsisavinti rsync ir įdiegti kuo saugesnį duomenų atsarginių kopijų sprendimą.

Rekomenduojamas: