If-Koubou

Ei-aloittelijan opas tietojen synkronointiin Rsyncin kanssa

Ei-aloittelijan opas tietojen synkronointiin Rsyncin kanssa (Miten)

Rsync-protokolla voi olla melko yksinkertainen käyttää tavallisiin varmuuskopiointi- / synkronointityöhön, mutta jotkin sen kehittyneemmät ominaisuudet saattavat yllättää sinut. Tässä artikkelissa aiomme näyttää, kuinka suurimmat tietovarastot ja varmuuskopio harrastajat voivat käyttää rsyncä yhtenä ratkaisuna kaikkien tietojen irtisanomisen tarpeisiin.

Varoitus: Vain kehittyneet geeksit

Jos istut siellä ajattelemalla "Mikä hätää on rsync?" Tai "Käytän vain rsyncä todella yksinkertaisiin tehtäviin", kannattaa tutustua edelliseen artikkeliin siitä, miten rsyncä käytetään varmuuskopioimaan tietosi Linuxissa. johdatus rsync-ohjelmaan, ohjaa asennuksen läpi ja esittelee sen perustoiminnot. Kun olet ymmärtänyt rsyncin käytön (rehellisesti, se ei ole niin monimutkainen) ja olet tyytyväinen Linux-päätelaitteeseen, olet valmis siirtymään tähän kehittyneeseen oppaaseen.

Rsyncin suorittaminen Windowsissa

Ensinnäkin saamme Windows-lukijamme samalla sivulla kuin Linux-gurut. Vaikka rsync on rakennettu toimimaan Unix-kaltaisilla järjestelmillä, ei ole mitään syytä, ettet voi käyttää sitä yhtä helposti Windowsissa. Cygwin tuottaa ihanan Linux-sovellusliittymän, jota voimme käyttää rsyncin suorittamiseen, joten pääset verkkosivuillesi ja lataa 32-bittinen tai 64-bittinen versio tietokoneesta riippuen.

Asennus on yksinkertaista; voit säilyttää kaikki vaihtoehdot oletusarvoillaan, kunnes pääset "Select Packages" -näyttöön.

Nyt sinun on tehtävä samat vaiheet Vimille ja SSH: lle, mutta paketit näyttävät hieman erilaisilta, kun valitset ne, joten tässä on joitain kuvakaappauksia:

Vimin asentaminen:

SSH: n asennus:

Kun olet valinnut nämä kolme pakettia, jatka napsauttamalla seuraavaksi, kunnes olet valmis. Sitten voit avata Cygwinin napsauttamalla kuvaketta, jonka asentaja asetti työpöydälle.

rsync-komennot: Yksinkertainen edistyneeseen

Nyt, kun Windows-käyttäjät ovat samalla sivulla, katsotaan yksinkertaista rsync-komentoa ja näyttävät, kuinka joidenkin kehittyneiden kytkimien käyttö voi nopeasti tehdä monimutkaiseksi.

Oletetaan, että sinulla on joukko tiedostoja, joita tarvitaan varmuuskopiointiin - kuka ei näinä päivinä? Kytke kannettava kiintolevy tietokoneeseen, jotta voit varmuuskopioida tietokoneesi tiedostot ja antaa seuraavan komennon:

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

Tai tapa, jolla se näyttäisi Windows-tietokoneelta Cygwinin kanssa:

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

Melko yksinkertainen, ja siinä vaiheessa ei todellakaan ole tarvetta käyttää rsyncä, koska voit vetää ja pudottaa tiedostoja. Jos toisella kiintolevylläsi on jo joitain tiedostoja ja tarvitsee vain päivitetyt versiot ja viimeisimmän synkronoinnin jälkeen luotavat tiedostot, tämä komento on kätevä, koska se lähettää vain uudet tiedot kiintolevylle. Suurilla tiedostoilla ja erityisesti tiedostojen siirtämisellä Internetissä tämä on iso asia.

Tiedostojen varmuuskopiointi ulkoiseen kiintolevyyn ja sen jälkeen pitää kiintolevy samassa paikassa kuin tietokone on erittäin huono idea, joten katsokaamme, mitä sen tarvitsisi aloittaa tiedostojen lähettäminen Internetin välityksellä toiseen tietokoneeseen ( vuokraama, perheenjäsen, jne.).

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

Yllä oleva komento lähettää tiedostot toiselle tietokoneelle, jonka IP-osoite on 10.1.1.1. Se poistaa ylimääräiset tiedostot määränpältä, joka ei enää ole lähdeluettelossa, tuottaa siirrettävät tiedostonimet, joten sinulla on käsitys siitä, mitä tapahtuu ja tunneli rsync SSH: n kautta portissa 12345.

-a -v-e -delete kytkimet ovat joitain yksinkertaisimpia ja yleisesti käytettyjä; sinun on jo tiedettävä paljon niistä, jos luet tämän opetusohjelman. Mennään muutamia muita kytkimiä, joita joskus ei oteta huomioon, mutta uskomattoman hyödyllisiä:

--progress - Tämä kytkin antaa meille mahdollisuuden nähdä kunkin tiedoston siirron eteneminen. Se on erityisen hyödyllistä siirtää suuria tiedostoja internetin välityksellä, mutta se voi tuottaa järjetöntä tietoa, kun siirrät pieniä tiedostoja nopeasti verkkoon.

Rsync-komento --progress kun varmuuskopio on käynnissä:

--osittainen - Tämä on toinen kytkin, joka on erityisen hyödyllinen siirrettäessä suuria tiedostoja Internetin välityksellä. Jos rsync keskeytyy mistä tahansa syystä tiedostonsiirron keskellä, osittain siirretty tiedosto säilytetään kohdehakemistoon ja siirto jatkuu, kun se jätetään pois, kun rsync-komento suoritetaan uudelleen. Kun siirrät suuria tiedostoja internetin kautta (esimerkiksi pari gigatavua), ei ole mitään pahempaa kuin muutaman sekunnin internetkatkoksen, sinisen näytön tai ihmisvirheen purkaminen tiedostonsiirtoon ja sen jälkeen, kun kaikki on aloitettava uudelleen.

-P - tämä kytkin yhdistyy --progress ja --osittainen, joten käytä sitä sen sijaan ja se tekee rsync-komennosta hieman hienompaa.

-z tai --puristaa - Tämä kytkin tekee rsync-tiedoston datatiedon siirron, mikä vähentää määränpäähän lähetettävien tietojen määrää. Se on oikeastaan ​​melko yleinen kytkin, mutta se on kaukana välttämättömästä, sillä se hyötyy vain hitaiden yhteyksien välisistä siirroista. Se ei tee mitään seuraavista tiedostoista: 7z, avi, bz2, deb, g, z iso, jpeg, jpg, mov, mp3, mp4, ogg, rpm, tbz, tgz, z, zip.

-h tai --human luettavassa - Jos käytät --progress kytkin, sinun on ehdottomasti käytettävä tätä myös. Toisin sanoen, ellet halua muuttaa tavua megatavuina lennossa. -h kytkin muuntaa kaikki tulostetut numerot ihmisen luettavissa olevaan muotoon, joten voit todella tuntea siirrettävän tiedon määrän.

-n tai --kuivaharjoittelu - Tämä kytkin on välttämätöntä tietää, milloin kirjoitat ensin rsync-skriptiasi ja testaat sen. Se suorittaa koeajon, mutta ei itse asiassa tee mitään muutoksia - muutokset jatkuvat normaalisti, joten voit lukea kaiken ja varmistaa, että se näyttää hyvältä, ennen kuin komentosarjaasi siirretään tuotantoon.

R tai --relative - Tätä kytkintä on käytettävä, jos kohdehakemistoa ei ole vielä olemassa. Käytämme tätä vaihtoehtoa myöhemmin tässä oppaassa, jotta voimme tehdä kohdekoneiden hakemistoja aikamerkinnöillä kansion nimissä.

--exclude-maasta - Tätä kytkinä käytetään linkittämään poislukien luetteloon, joka sisältää hakemistopolut, joita et halua varmuuskopioida. Se tarvitsee vain tavallista tekstitiedostoa jokaisella rivillä olevan hakemiston tai tiedostopolun kanssa.

--lisää-maasta - Samankaltainen kuin --exclude-maasta, mutta se linkittää tiedostoon, joka sisältää varmuuskopioitavia tiedostoja ja tiedostoja.

--stats - Ei todellakaan ole tärkeä kytkin millä tahansa tavalla, mutta jos olet järjestelmä, voi olla kätevää tietää kunkin varmuuskopioinnin yksityiskohtaiset tilastot vain, jotta voit seurata verkon ja niin lähetettävän liikenteen määrää.

--loki tiedosto - Tämän avulla voit lähettää rsync-lähdön lokitiedostoon. Suosittelemme ehdottomasti automaattisia varmuuskopioita, joissa et ole lukemassa tuotos itse. Anna aina lokitiedostoja kerran vapaa-aikana varmistaaksesi, että kaikki toimii oikein. Lisäksi se on ratkaiseva kytkin, jota järjestelmä käyttää, joten sinun ei tarvitse kysyä, miten varmuuskopiot epäonnistuivat, kun olet jättänyt vastuuhenkilön.

Tarkastellaan nyt rsync-komentoa, kun meillä on muutama lisäkytkin:

rsync -avzhP --delete --stats --log-file = / home / geek / rsynclogs / varmuuskopio.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 varmistusratkaisua. Vaikka tiedostomme ovat nyt kahdessa eri fyysisessä paikassa, tämä varmuuskopio ei tee mitään suojelemaan meitä yhdestä tärkeimmistä tietojen menetyksen syistä: inhimillisestä virheestä.

Snapshot-varmuuskopiot

Jos vahingossa poistat tiedoston, virus vahingoittaa tiedostoja tai jotain muuta tapahtuu, jolloin tiedostoja ei haluta muuttaa ja sitten suoritat rsync-varmuuskopiokirjoituksesi, varmuuskopioidut tiedot korvataan epätoivottavilla muutoksilla. Kun tällainen asia ilmenee (ei jos, mutta milloin), varmuuskopiointiratkaisu ei tehnyt mitään suojaamaan sinua tietojen menetyksestä.

Rsyncin luoja tajusi tämän ja lisäsi --varmuuskopioida ja --backup-dir argumentteja, jotta käyttäjät voisivat käyttää differentiaalisia varmuuskopioita. Ensimmäinen esimerkki rsyncin verkkosivuilla näyttää skriptin, jossa täydellinen varmuuskopio suoritetaan seitsemän päivän välein ja sitten muutokset näihin tiedostoihin varmuuskopioidaan erillisiin hakemistoihin päivittäin. Ongelma tässä menetelmässä on, että tiedostojen palauttamiseksi sinun on tehokkaasti palautettava ne seitsemään eri kertaa. Lisäksi useimmat geekset tekevät varmuuskopioitaan useita kertoja päivässä, joten voit helposti ottaa 20 + eri varmuuskopio-hakemistoja milloin tahansa. Tiedostojen palauttaminen ei ole pelkästään kipua, vaan jopa varmuuskopioidut tiedot voivat olla erittäin aikaa vieviä - sinun on tiedettävä, että viimeinen tiedosto on muuttunut, jotta löydettäisiin uusin varmuuskopio. Kaiken lisäksi on tehotonta käyttää vain viikoittain (tai jopa harvemmin tietyissä tapauksissa) inkrementaalisia varmuuskopioita.

Snapshot-varmuuskopiot pelastamiseen! Snapshot-varmuuskopiot ovat vain inkrementaalisia varmuuskopioita, mutta ne käyttävät kovia linkkejä säilyttääkseen alkuperäisen lähteen tiedostorakenteen. Se voi olla vaikea päällystää pääsi aluksi, joten katsokaamme esimerkkiä.

Teeskennellä, että meillä on varmuuskopiokirjoitus, joka automaattisesti varmuuskopioi tiedot joka toinen tunti. Aina kun rsync tekee tämän, se nimeää jokaisen varmuuskopion muotoon: Varmuuskopio-kuukausi-päivän-vuosi-aika.

Joten, lopussa tyypillinen päivä, meillä olisi luettelo kansioista meidän kohdekansio kuten tämä:

Kun siirryt näistä hakemistoista, näet jokaisen tiedoston lähdeluettelosta aivan kuten se oli tuolloin. Ei kuitenkaan olisi kaksoiskappaleita kahteen hakemistoon. rsync tekee tämän käyttämällä verkkoyhteyttä --link-dest = DIR Perustelu.

Tietenkin, jotta nämä hienosti ja kätevästi päivitetyt hakemistonimet saavat jouduttaa hieman rsync-komentosarjaa. Katsotaanpa, mitä se tarvitsisi varmistamaan tällaisen varmuuskopiointiratkaisun, ja selittämme käsikirjoituksen tarkemmin:

#! / Bin / bash

# kopioi vanha aika.txt ajaksi time2.txt

kyllä cp ~ / varmuuskopio / time.txt ~ / varmuuskopio / time2.txt

#overwrite vanha time.txt-tiedosto uudella ajalla

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

#lasta lokitiedosto

echo ""> ~ / varmuuskopio / rsync-tapa \ "% F-% I% p"

#rsync -komento

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

# älä unohda lokitiedostoa ja laita se varmuuskopiolla

scp -P 12345 ~ / backup / rsync-'cat ~ / varmuuskopio / time.txt'.log [email protected]: / home / geek2 / files / 'cat ~ / varmuuskopio / time.txt' / rsync-'cat ~ / backup / time.txt'.log

Tämä olisi tyypillinen rsync-skripti. Jos menetämme sinut jonnekin, haastelemme sitä kappaletta kohti:

Komentosarjan ensimmäinen rivi kopioi time.txtin sisällön time2.txt: ään. Kyllä-putki vahvistaa, että haluamme korvata tiedoston. Seuraavaksi otamme tämänhetkisen ajan ja asetamme sen ajan.txt. Nämä tiedostot tulevat kätevästi myöhemmin.

Seuraava rivi tekee rsync-lokitiedoston, nimeämällä sen rsync-date.log (jossa päivämäärä on todellinen päivämäärä ja kellonaika).

Nyt monimutkainen rsync-komento, jonka olemme varoittaneet:

-avzhPR, -e, --delete, --stats, --log-tiedosto, --exclude-from, --link-dest - Vain kytkimet, joista puhuimme aikaisemmin. vieritä ylös, jos tarvitset kertauskirjainta.

--chmod = Du = rwx, DGO = rx, Fu = rw, Fgo = r - Nämä ovat kohdehakemiston käyttöoikeudet. Koska teemme tämän hakemiston keskelle rsync-komentojamme, meidän on määritettävä käyttöoikeudet, jotta käyttäjä voi kirjoittaa tiedostoja siihen.

Päivämäärän ja kissan komentojen käyttö

Aiomme mennä jokaisen päivämäärän ja kissakomennon käytön aikana rsync-komennon sisällä siinä järjestyksessä kuin ne esiintyvät. Huomaa: tiedämme, että tällä toiminnolla on muita tapoja, varsinkin käyttämällä muuttujien ilmoittamista, mutta tässä oppaassa olemme päättäneet käyttää tätä menetelmää.

Lokitiedosto määritellään seuraavasti:

~ / varmuuskopio / rsync-tapaus + "% F-% I% p"

Vaihtoehtoisesti voisimme määrittää sen seuraavasti:

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

Joko niin, --loki tiedosto komennon pitäisi pystyä löytämään aikaisemmin luotu päivätyn lokitiedoston ja kirjoittaa siihen.

Linkin kohde -tiedosto on määritetty seuraavasti:

--link-dest = / home / geek2 / files / 'cat ~ / varmuuskopio / time2.txt'

Tämä tarkoittaa, että --link-dest komento annetaan edellisen varmuuskopion hakemistosta. Jos suoritamme varmuuskopioita joka toinen tunti, ja se on neljätoista, kun käytimme tätä kirjoitusohjelmaa, sitten --link-dest komento etsii hakemistoa, joka on luotu kello 14.00 ja siirtää vain sen jälkeen muuttuneet tiedot (jos sellaisia ​​on).

Toistaakseni, siksi time.txt kopioidaan time2.txt: iin komentosarjan alussa, joten --link-dest komento voi viitata siihen myöhemmin.

Kohdehakemisto on määritetty seuraavasti:

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

Tämä komento yksinkertaisesti asettaa lähdetiedostot hakemistoon, jolla on nykyisen päivämäärän ja kellon nimi.

Lopuksi varmistetaan, että lokitiedosto kopioidaan varmuuskopion sisälle.

scp -P 12345 ~ / backup / rsync-'cat ~ / varmuuskopio / time.txt'.log [email protected]: / home / geek2 / files / 'cat ~ / varmuuskopio / time.txt' / rsync-'cat ~ / backup / time.txt'.log

Käytämme suojattua kopiota porttiin 12345 ottaaksemme rsync-lokin ja sijoitamme sen oikeaan hakemistoon. Jos haluat valita oikean lokitiedoston ja varmistaa, että se päätyy oikeaan paikkaan, time.txt -tiedosto on viitattava kissan komennon kautta. Jos mietit, miksi päätimme käyttää kissaa time.txtia päivämäärän komennon sijaan, koska rsync-komento oli käynnissä paljon aikaa, joten varmistamme, että meillä on oikea aika, me vain kissa aiemmin luotu tekstiasiakirja.

automaatio

Käytä Cron-ohjelmaa Linuxissa tai Task Scheduler -ohjelmassa Windowsissa rsync-komentosarjan automatisoimiseksi. Yksi asia, jonka on oltava varovainen, on varmistaa, että lopetat kaikki käynnissä olevat rsync-prosessit ennen kuin jatkat uutta. Task Scheduler näyttää sulkevan kaikki jo käynnissä olevat tapaukset automaattisesti, mutta Linuxissa sinun on oltava hieman luova.

Useimmat Linux-jakaumat voivat käyttää pkill-komentoa, joten muista lisätä seuraava rsync-komentosarjan alkuun:

pkill -9 rsync

salaus

Emme ole vielä tehneet. Meillä on lopulta fantastinen (ja ilmainen!) Varmuuskopiointi ratkaisu, mutta kaikki tiedostot ovat edelleen alttiita varkaudelle. Toivottavasti varmuuskopioit tiedostoja joillekin satoja kilometrejä. Riippumatta siitä, kuinka kauas paikka on, varkaus ja hakkerointi voivat aina olla ongelmia.

Esimerkkeissämme olemme tunkeutuneet kaikkiin rsync-liikenteemme SSH: n kautta, joten kaikki tiedostomme ovat salattuja, kun ne kuljettavat kohteeseensa. Meidän on kuitenkin varmistettava, että kohde on yhtä turvallinen. Muista, että rsync salata tietosi vain siirrettäessä, mutta tiedostot ovat auki, kun ne saapuvat kohteeseensa.

Yksi rsyncin parhaista ominaisuuksista on se, että se siirtää vain kunkin tiedoston muutokset. Jos sinulla on kaikki tiedostosi salatut ja tehdä pienen muutoksen, koko tiedosto on lähetettävä uudelleen salauksen seurauksena ja kaikki tiedot on satunnaistettu täysin muutosten jälkeen.

Tästä syystä on parasta / helpointa käyttää jonkinlaista levyn salausta, kuten BitLocker for Windows tai dm-crypt for Linux. Näin tietosi suojataan varkauden varalta, mutta tiedostoja voidaan siirtää rsyncillä ja salaus ei estä sen suorituskykyä. On olemassa muita vaihtoehtoja, jotka toimivat samalla tavalla kuin rsync tai jopa toteuttaa jotain sen muotoa, kuten Duplicity, mutta niillä ei ole joitain ominaisuuksia, joita rsync on tarjonnut.

Kun olet asentanut tilannevedoksen varmuuskopiot offsite-sijainnilla ja salasi lähde- ja kohdekäyttöiset kiintolevyt, anna itsellesi kopion takana rsyncin hallitsemiseksi ja mahdollisimman varmojen tietojen varmuuskopiointiratkaisun toteuttamiseksi.