Ei-aloittelijan opas tietojen synkronointiin Rsyncin kanssa
Rsync-protokolla voi olla melko yksinkertainen käyttää tavallisissa varmuuskopiointi- / synkronointityöpaikoissa, mutta jotkin sen kehittyneemmistä ominaisuuksista saattavat yllättää sinut. Tässä artikkelissa näytämme, kuinka edes suurimmat tietokannattajat ja varmuuskopiointimiehet voivat käyttää rsynciä yhtenä ratkaisuna kaikkiin tietojenkäsittelyn tarpeisiinsa.
Varoitus: vain kehittyneet Geeks
Jos istut siellä ajattelemalla "Mitä heck on rsync?" Tai "Käytän vain rsyncia todella yksinkertaisiin tehtäviin", kannattaa ehkä tarkistaa edellinen artikkeli siitä, miten rsyncia käytetään varmuuskopioimaan tietosi Linuxissa. Johdatus rsynciin, opastaa asennuksen kautta ja esittelee sen perustoiminnot. Kun olet ymmärtänyt, miten rsyncia käytetään (rehellisesti, se ei ole niin monimutkainen) ja että olet tyytyväinen Linux-päätelaitteeseen, olet valmis siirtymään tähän edistyneeseen oppaaseen.
Rsyncin käyttö Windowsissa
Ensinnäkin saamme Windows-lukijat samalle sivulle kuin Linux-gurumme. Vaikka rsync on rakennettu toimimaan Unixin kaltaisissa järjestelmissä, ei ole mitään syytä, että et voi käyttää sitä yhtä helposti Windowsissa. Cygwin tuottaa loistavan Linux-sovellusliittymän, jota voimme käyttää rsyncin suorittamiseen, joten siirry verkkosivustolleen ja lataa 32-bittinen tai 64-bittinen versio tietokoneesta riippuen..
Asennus on yksinkertaista; voit pitää kaikki asetukset oletusarvoina, kunnes pääset "Valitse paketteja" -näyttöön.
Nyt sinun täytyy tehdä samat vaiheet kuin Vim ja SSH, mutta paketit näyttävät hieman erilaisilta, kun valitset ne, joten tässä on joitakin kuvakaappauksia:
Vimin asentaminen:
SSH: n asentaminen:
Kun olet valinnut nämä kolme pakettia, jatka napsauttamalla, kunnes asennus on valmis. Sitten voit avata Cygwinin klikkaamalla kuvaketta, jonka asentaja on asettanut työpöydälle.
rsync-komennot: Yksinkertainen ja edistynyt
Nyt kun Windows-käyttäjät ovat samalla sivulla, katsotaanpa yksinkertaista rsync-komentoa ja näyttää, miten joidenkin kehittyneiden kytkinten käyttö voi tehdä siitä nopeasti monimutkaisen.
Oletetaan, että sinulla on joukko tiedostoja, jotka on varmuuskopioitava - kuka ei näinä päivinä? Liitä kannettava kiintolevy, jotta voit varmuuskopioida tietokoneesi tiedostot ja antaa seuraavan komennon:
rsync -a / home / geek / files / / mnt / usb / tiedostot /
Tai, miten se näkisi Windows-tietokoneessa, jossa on Cygwin:
rsync -a / cygdrive / c / tiedostot / / cygdrive / e / tiedostot /
Melko yksinkertainen, ja siinä vaiheessa ei todellakaan ole tarvetta käyttää rsynciä, koska voit vain vetää ja pudottaa tiedostoja. Jos toisella kiintolevylläsi on jo joitakin tiedostoja ja tarvitset vain päivitetyt versiot sekä viimeisimmän synkronoinnin jälkeen luotuja tiedostoja, tämä komento on kätevä, koska se lähettää vain uudet tiedot kiintolevylle. Suuret tiedostot ja erityisesti tiedostojen siirtäminen internetin välityksellä on suuri juttu.
Tiedostojen varmuuskopiointi ulkoiselle kiintolevylle ja sitten kiintolevyn pitäminen samassa paikassa kuin tietokoneesi on erittäin huono idea, joten katsotaanpa, mitä se tarvitsee tiedostojen lähettämiseksi Internetissä toiseen tietokoneeseen ( yksi, jonka olet vuokrannut, perheenjäsen jne.).
rsync -av --delete -e 'ssh -p 12345' / home / geek / files / [email protected]: / home / geek2 / tiedostot /
Yllä oleva komento lähettää tiedostot toiseen tietokoneeseen, jonka IP-osoite on 10.1.1.1. Se poistaisi ulkopuoliset tiedostot kohteesta, joka ei enää ole lähdekoodissa, lähetä siirrettävät tiedostonimet niin, että sinulla on käsitys siitä, mitä tapahtuu, ja tunnelin rsync SSH: n kautta portissa 12345.
-a -v -e - poista
kytkimet ovat joitakin kaikkein perus- ja yleisimpiä; sinun pitäisi jo tietää paljon niistä, jos luet tätä opetusohjelmaa. Mennään muutamia muita kytkimiä, joita joskus ei huomioida, mutta uskomattoman hyödyllisiä:
--edistyminen
- Tämän kytkimen avulla voimme nähdä kunkin tiedoston siirron edistymisen. Se on erityisen hyödyllinen, kun siirrät suuria tiedostoja Internetin kautta, mutta voit tuottaa tietämättömän määrän tietoa, kun siirrät pieniä tiedostoja nopean verkon kautta.
Rsync-komento --edistyminen
vaihtaa, kun varmuuskopiointi on käynnissä:
--osittainen
- Tämä on toinen kytkin, joka on erityisen hyödyllinen, kun siirrät suuria tiedostoja Internetissä. Jos rsync keskeytyy jostakin syystä tiedostonsiirron keskellä, osittain siirretty tiedosto pidetään kohde-hakemistossa ja siirto jatkuu, kun se jätti pois, kun rsync-komento suoritetaan uudelleen. Kun siirrät suuria tiedostoja Internetissä (esim. Pari gigatavua), ei ole mitään pahempaa kuin muutaman toisen Internet-katkoksen, sinisen näytön tai inhimillisen virheen laukaiseminen tiedostosiirron aikana ja sinun on aloitettava kaikki uudestaan.
-P
- tämä kytkin yhdistyy --edistyminen
ja --osittainen
, joten käytä sitä sen sijaan ja se tekee rsync-komennostasi pienemmäksi.
-z
tai --puristaa
- Tällä kytkimellä rsync pakkaa tiedoston tiedot siirrettäessä, mikä vähentää määränpäähän lähetettävää dataa. Se on oikeastaan melko yleinen kytkin, mutta ei ole kaukana olennaisesta, vain todella hyödyttää sinua hitaiden yhteyksien välillä, eikä se tee mitään seuraaville tiedostotyypeille: 7z, avi, bz2, deb, g, z iso, jpeg, jpg, mov, mp3, mp4, ogg, rpm, tbz, tgz, z, zip.
-h
tai --luettavaan
- Jos käytät --edistyminen
kytkin, sinun kannattaa varmasti käyttää tätä. Toisin sanoen, ellet halua muuntaa tavuja megatavuiksi lennossa. -h
kytkin muuntaa kaikki tuotetut numerot ihmisen luettavaksi formaatiksi, joten voit todella ymmärtää siirrettävän datan määrän.
-n
tai --kuivaharjoittelu
- Tämä kytkin on välttämätöntä tietää, milloin olet kirjoittamassa rsync-komentosarjaa ja testannut sen. Se suorittaa koeajon, mutta ei oikeastaan tee mitään muutoksia - mahdolliset muutokset tulostetaan edelleen normaalisti, joten voit lukea kaiken ja varmista, että se näyttää kunnossa ennen skriptiäsi tuotantoon.
-R
tai --suhteellinen
- Tätä kytkintä on käytettävä, jos kohdehakemistoa ei ole jo olemassa. Käytämme tätä vaihtoehtoa myöhemmin tässä oppaassa, jotta voimme tehdä hakemistoja kohdelaitteelle, jossa on aikaleimat kansioiden nimissä.
--sulkea-maasta
- Tätä kytkintä käytetään linkittämään poissulkevaan luetteloon, joka sisältää hakemistopolkuja, joita et halua varmuuskopioida. Se tarvitsee vain tavallisen tekstitiedoston, jossa on hakemiston tai tiedoston polku kullakin rivillä.
--include-maasta
- Samankaltainen --sulkea-maasta
, mutta se linkittää tiedostoon, joka sisältää hakemistoja ja tiedostojen polkuja, joita haluat varmuuskopioida.
--tilastot
- Ei oikeastaan tärkeä kytkin millään keinoin, mutta jos olet sysadmin, voi olla kätevää tietää kunkin varmuuskopion yksityiskohtaiset tilastot, joten voit seurata verkon kautta lähetettävän liikenteen määrää..
--loki tiedosto
- Tämän avulla voit lähettää rsync-lähdön lokitiedostoon. Suosittelemme ehdottomasti tätä automaattisille varmuuskopioille, joissa et ole itse lukenut tulostusta. Anna aina lokitiedostot kerran vapaa-ajalla varmistaaksesi, että kaikki toimii oikein. Lisäksi se on ratkaiseva kytkin sysadminin käyttämiselle, joten et ole miettinyt, miten varmuuskopiot epäonnistuivat, kun jätit harjoittelijan vastuulle.
Katsotaanpa rsync-komentoa nyt, kun meillä on muutama lisäkytkin:
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 / tiedostot /
Komento on edelleen melko yksinkertainen, mutta emme ole vielä luoneet kunnollista varmuuskopiointiratkaisua. Vaikka tiedostot ovat nyt kahdessa eri fyysisessä sijainnissa, tämä varmuuskopio ei suojaa meitä yhden tärkeimmistä syistä, joiden vuoksi menetetään: ihmisen virhe.
Yksittäiskuvan varmuuskopiot
Jos poistat tiedoston vahingossa, virus vahingoittaa tiedostojasi tai tapahtuu jotain muuta, jolloin tiedostot muuttuvat epätoivottavasti, ja sitten suoritat rsync-varmuuskopiosarjan, varmuuskopioidut tiedot korvataan ei-toivotuilla muutoksilla. Kun tällainen asia tapahtuu (ei jos, mutta milloin), varmuuskopiointiratkaisu ei tehnyt mitään suojaamaan sinua tietojen häviämiseltä.
Rsyncin luoja tajusi tämän ja lisäsi --varmuuskopioida
ja --backup-dir
argumentit, jotta käyttäjät voisivat suorittaa differentiaalivarmistuksia. Ensimmäinen esimerkki rsyncin verkkosivuilta näyttää skripin, jossa täysi varmuuskopiointi suoritetaan seitsemän päivän välein, ja sitten muutokset näihin tiedostoihin varmuuskopioidaan päivittäin erillisissä hakemistoissa. Tämän menetelmän ongelmana on, että tiedostot palautetaan tehokkaasti seitsemän eri kertaa. Lisäksi useimmat geeksit käyttävät varmuuskopioita useita kertoja päivässä, joten voit helposti käyttää 20 + eri varmuuskopiotiedostoja milloin tahansa. Tiedostojen palauttaminen ei ole vain kipua, mutta jopa vain varmuuskopioitujen tietojen tarkasteleminen voi olla erittäin aikaa vievää - sinun on tiedettävä, kun tiedostoa muutettiin viimeksi, jotta löydettäisiin viimeisin varmuuskopioitu kopio. Kaiken kaikkiaan se on tehotonta suorittaa vain viikoittain (tai jopa harvemmin joissakin tapauksissa) varmuuskopioita.
Snapshot-varmuuskopiot pelastukseen! Snapshot-varmuuskopiot eivät ole pelkästään inkrementaalisia varmuuskopioita, mutta ne käyttävät hardlinks-tiedostoja säilyttääkseen alkuperäisen lähteen tiedostorakenteen. Se voi olla vaikea kääriä päätäsi aluksi, joten katsokaamme esimerkkiä.
Pretend, että meillä on varmuuskopiointiohjelma, joka varmuuskopioi tiedot automaattisesti joka toinen tunti. Kun rsync tekee tämän, se nimeää jokaisen varmuuskopion muodossa: Varmuuskopiointi-kuukausi-päivä-vuosi.
Joten lopussa tavallinen päivä, meillä olisi luettelo kansioista kohdehakemistossa, kuten tämä:
Kun siirrät mitä tahansa näistä hakemistoista, näet kaikki lähdeluettelon tiedostot täsmälleen sellaisena kuin se oli tuolloin. Silti ei olisi kaksoiskappaleita missään kahdessa hakemistossa. rsync saavuttaa tämän käyttämällä hardlinkingiä --link-dest = DIR
Perustelu.
Tietenkin, jotta nämä mukavasti ja siististi päivitetyt hakemistonimet tulevat olemaan, meidän on hieman punnittava rsync-skripti. Katsotaanpa, mitä se tarvitsee varmuuskopiointiratkaisun toteuttamiseksi, ja selitämme sitten skriptiä tarkemmin:
#! / Bin / bash
#copy old time.txt kellonaika2.txt
kyllä | cp ~ / backup / time.txt ~ / varmuuskopio / time2.txt
#overwrite vanha time.txt-tiedosto uudella ajalla
echo 'date +'% F-% I% p ”'> ~ / backup / time.txt
# tehdä lokitiedosto
echo “”> ~ / backup / rsync-'date + ”% F-% I% p” '.
#rsync-komento
rsync -avzhPR --chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r --delete - arvot --log-file = ~ / varmuuskopio / rsync-'date + ”% F-% I% p ”'. log --exclude-from' ~ / izslēgt.txt '--link-dest = / home / geek2 / files /' cat ~ / backup / time2.txt '-e' ssh -p 12345 '/ home / geek / files / [email protected]: / home / geek2 / files / 'päivämäärä +'% F-% I% p '' /
# Älä unohda skannata lokitiedostoa ja aseta se varmuuskopioon
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
Se olisi tyypillinen tilannekuvan rsync-komentosarja. Jos menettäisimme sinut jonnekin, lähdetäänkö se palasiksi:
Käsikirjoituksen ensimmäinen rivi kopioi time.txt: n sisällön time2.txt-muotoon. Kyllä putki on vahvistaa, että haluamme korvata tiedoston. Seuraavaksi otamme ajankohdan ja laitamme sen time.txt-muotoon. Nämä tiedostot ovat käteviä myöhemmin.
Seuraava rivi tekee rsync-lokitiedoston ja nimeää sen rsync-date.log (jos päivämäärä on todellinen päivämäärä ja kellonaika).
Nyt monimutkainen rsync-komento, jonka olemme varoittaneet:
-avzhPR, -e, --delete, --stats, --log-file, --exclude-from, --link-dest
- Vain kytkimet, joista puhuimme aikaisemmin; selaa ylös, jos tarvitset virkistystoiminnon.
--chmod = Du = rwx, DGO = rx, Fu = rw, Fgo = r
- Nämä ovat kohde-hakemiston oikeudet. Koska teemme tämän hakemiston rsync-komentosarjamme keskellä, meidän on määritettävä oikeudet, jotta käyttäjä voi kirjoittaa siihen tiedostoja.
Päivämäärän ja kissan komentojen käyttö
Aiomme käydä läpi jokaisen rsync-komennon päivämäärän ja kissan komentojen käytön siinä järjestyksessä kuin ne esiintyvät. Huomautus: olemme tietoisia siitä, että on olemassa muita tapoja tämän toiminnon toteuttamiseen, varsinkin kun käytetään muuttujia, mutta tässä oppaassa olemme päättäneet käyttää tätä menetelmää.
Lokitiedosto määritetään seuraavasti:
~ / backup / rsync-'date + ”% F-% I% p” '
Vaihtoehtoisesti olisimme voineet määrittää sen seuraavasti:
~ / backup / rsync-'cat ~ / backup / time.txt'.log
Joko niin, --loki tiedosto
komennolla pitäisi olla mahdollisuus löytää aiemmin luotu päivätty lokitiedosto ja kirjoittaa sille.
Linkin kohdetiedosto on määritetty seuraavasti:
--link-dest = / home / geek2 / files / 'cat ~ / backup / time2.txt'
Tämä tarkoittaa sitä, että --link-dest
komento annetaan edellisen varmuuskopion hakemistoon. Jos käytämme varmuuskopioita kahden tunnin välein, ja se on 4:00 PM, kun suoritimme tämän komentosarjan, sitten --link-dest
komento etsii hakemiston, joka on luotu klo 14.00 ja siirtää vain sen jälkeen muuttuneet tiedot (jos sellaisia on).
Jos haluat toistaa, siksi time.txt kopioidaan aika2.txtiin komentosarjan alussa, joten --link-dest
komento voi viitata tuohon aikaan myöhemmin.
Kohdekansio on määritetty seuraavasti:
[email protected]: / home / geek2 / files / 'päivämäärä +'% F-% I% p ”'
Tämä komento yksinkertaisesti asettaa lähdetiedostot hakemistoon, jossa on nykyisen päivämäärän ja kellonajan nimi.
Lopuksi varmistamme, että kopio lokitiedostosta asetetaan varmuuskopion sisään.
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
Käytämme suojattua kopiota portissa 12345 ottamaan rsync-lokin ja asettamalla sen oikeaan hakemistoon. Voit valita oikean lokitiedoston ja varmista, että se päättyy oikeaan kohtaan, time.txt-tiedosto on viitattava kissa-komennon kautta. Jos mietit, miksi päätimme kissan time.txtin sijaan päivämääräkomennon käyttämisestä, se johtuu siitä, että rsync-komennon käynnistyessä olisi voinut kulua paljon aikaa, joten varmista, että meillä on oikea aika aiemmin luomamme tekstiasiakirjan.
automaatio
Käytä Cron Linuxissa tai Task Scheduleria Windowsissa automatisoidaksesi rsync-komentosarjan. Yksi asia, jonka täytyy olla varovainen, varmistaa, että lopetat kaikki käynnissä olevat rsync-prosessit ennen uuden jatkamista. Tehtävien ajoitus näyttää sulkevan jo käynnissä olevat instanssit automaattisesti, mutta Linuxin on oltava hieman luovempi.
Useimmat Linux-jakelut voivat käyttää pkill-komentoa, joten lisää vain seuraava rsync-komentosarjan alkuun:
pkill -9 rsync
salaus
Ei, emme ole vielä tehneet. Meillä on vihdoin fantastinen (ja ilmainen!) Varmuuskopiointiratkaisu, mutta kaikki tiedostot ovat edelleen alttiita varkauksille. Toivottavasti varmuuskopioit tiedostosi johonkin paikkaan satojen kilometrien päässä. Riippumatta siitä, kuinka varma että kaukainen paikka on, varkaus ja hakkerointi voivat aina olla ongelmia.
Esimerkissämme olemme tunneloitu kaikki rsync-liikenne SSH: n kautta, joten kaikki tiedostot salataan, kun ne kuljetetaan määränpäähänsä. Meidän on kuitenkin varmistettava, että kohde on yhtä turvallinen. Muista, että rsync salaa vain tiedot, kun ne siirretään, mutta tiedostot ovat auki, kun ne saapuvat määränpäähänsä.
Yksi rsyncin parhaista ominaisuuksista on se, että se siirtää vain muutokset kussakin tiedostossa. Jos sinulla on kaikki tiedostot salattuina ja tehdä pieniä muutoksia, koko tiedosto on lähetettävä uudelleen salauksen seurauksena, kun kaikki tiedot satunnaistetaan kokonaan muutoksen jälkeen.
Tästä syystä on parasta / helpoin käyttää jonkinlaista levyn salausta, kuten BitLocker for Windows tai dm-crypt Linuxille. Näin tietosi on suojattu varkauden sattuessa, mutta tiedostot voidaan siirtää rsyncillä ja salaus ei estä sen suorituskykyä. Käytettävissä on muitakin vaihtoehtoja, jotka toimivat samalla tavalla kuin rsync tai jopa toteuttaa jonkinlaista muotoa, kuten kaksoiskappaleet, mutta niillä ei ole joitakin ominaisuuksia, joita rsync tarjoaa.
Kun olet määrittänyt tilannekuvan varmuuskopiot paikan ulkopuolelta ja salannut lähde- ja kohde-kiintolevyt, anna itsellesi itsellesi selkä rsyncin hallitsemiseksi ja kaikkein luotettavimpien tietojen varmuuskopiointiratkaisun toteuttamiseksi.