17Aug

Ei-aloittelijan opas tietojen synkronointiin Rsyncin kanssa

rsync-protokolla voi olla melko helppokäyttöinen tavallisten 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 irtisanomistarpeisiin.

Varoitus: vain kehittyneet geeksit

Jos istut siellä ajattelemalla "mitä heck on rsync?" Tai "käytän vain rsyncä todella yksinkertaisiin tehtäviin", kannattaa tutustua edelliseen artikkeliin rsyncin käyttämisestä varmuuskopiointiintiedostosi Linuxista, joka antaa johdannoksi rsyncille, 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 Windows

: ssä 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ä samoja askelia Vim ja SSH: lle, mutta paketit näyttävät hieman erilaisilta, kun valitset niiden valitsemisen, joten tässä on muutamia kuvakaappauksia:

Vim:

asentaminen SSH:

: n asentaminenvalitsi 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: Simple to Advanced

Nyt, kun Windows-käyttäjät ovat samalla sivulla, katsotaan yksinkertaista rsync-komentoa ja näytetään, 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ä?Voit liittää kannettavan kiintolevyn, jotta voit varmuuskopioida tietokoneesi tiedostot ja antaa seuraavan komennon:

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

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

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

Melko yksinkertainen jatässä kohdassa ei todellakaan ole tarvetta käyttää rsyncia, 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 tietokoneesi on erittäin huono idea, joten katsokaamme, mitä tarvitsisi lähettää tiedostoja Internetin välityksellä toiseen tietokoneeseen(yksi, jonka olet vuokrannut, perheenjäsenenne jne.).

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

Yllä oleva komento lähettää tiedostot toiseen tietokoneeseen, 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 idea 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. Käy läpi 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, jossa --progress-kytkin varmuuskopiona 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 kohdehakemistossa ja siirto jatketaan, 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 yhdistää - proporress ja --partial, joten käytä sitä sen sijaan ja se tekee rsync-komennosta hieman hienompaa.

-z tai --compress - Tämä kytkin tekee rsync-kompressoidun tiedoston datan sen siirtämisen aikana, mikä pienentää 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-readable - Jos käytät --progress-kytkintä, varmasti haluat käyttää tätä myös. Toisin sanoen, ellet halua muuttaa tavua megatavuina lennossa.-h-kytkin muuntaa kaikki lähtevät numerot ihmisen luettavaksi, joten voit todella tuntea siirrettävän datamäärän.

-n tai --dry-run - Tämä kytkin on välttämätöntä tietää, milloin kirjoitat ensin rsync-skripti 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 - suhteellinen - 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-from - Tätä kytkinä käytetään linkittämään pois jättämästä luettelosta, joka sisältää hakemistopolut, joita et halua varmuuskopioida. Se tarvitsee vain tavallista tekstitiedostoa jokaisella rivillä olevan hakemiston tai tiedostopolun kanssa.

- include-from - Samanlainen kuin --exclude-from, mutta se linkittää tiedostoon, joka sisältää varmuuskopioitavia tiedostoja ja tiedostoja.

- tilastot - ei ole tärkeä kytkin millä tahansa tavalla, mutta jos olet sysadmin, voi olla kätevää tietää kunkin varmuuskopioinnin yksityiskohtaiset tilastot vain, jotta voit seurata verkon kautta lähetettävän liikenteen määrää ja tällaisia.

--log-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 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/files/

Komento on silti melko yksinkertainen, mutta emme ole vielä luoneet kunnollista varmuuskopiointiratkaisua. 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 poistat tiedoston vahingossa, virus vahingoittaa tiedostoja tai jotain muuta tapahtuu, jolloin tiedostoja muutetaan epätoivottavasti ja sitten suoritat rsync-varmistuskopiot, 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 --backup- ja --backup-dir-argumentit, jotta käyttäjät voisivat suorittaa differentiaaliset varmuuskopiot. 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 varmuuskopio-komentosarja, joka automaattisesti varmuuskopioi tiedot joka toinen tunti. Aina kun rsync tekee tämän, se nimeää jokaisen varmuuskopion muotoon: Varmuuskopio-kuukausi-päivä-vuosi-aika.

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

Kun läpi jonkin näistä hakemistoista, näet jokaisen tiedoston lähdeluettelosta juuri sellaisena kuin se oli tuolloin. Ei kuitenkaan olisi kaksoiskappaleita kahteen hakemistoon.rsync tekee tämän käyttämällä linkkiä --link-dest = DIR.

Tietenkin, jotta nämä mukavasti ja kätevästi päivitetyt hakemistomerkinnät tarvitsevat, meidän täytyy vahvistaa hieman rsync-komentojamme. Katsotaanpa, mitä se tarvitsisi varmistamaan tällaisen varmuuskopiointiratkaisun, ja selitämme käsikirjoituksen tarkemmin:

#!/bin/ bash

# kopioi vanha aika.txt osoitteeseen time2.txt

kyllä ​​|cp ~ /backup/ time.txt ~ /backup/ time2.txt

#overwrite vanha time.txt-tiedosto uudella ajalla

echo `date +"% F-% I% p "` & gt;~ /backup/ time.txt

#muokata lokitiedosto

echo "" & gt;~ /backup/ rsync -'date + "% F-% I% p" `.log

#rsync -komento

rsync -avzhPR --chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r --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/ `päivämäärä +"% F-% I% p "` /

# älä unohda lokitiedostoa ja laita sevarmuuskopio

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

Tämäolisi tyypillinen tilannekuvan rsync-skripti. Jos menetit sinut jonnekin, haastetaan se kappaletta kohti:

Komentosarjamme ensimmäinen rivi kopioi time.txtin sisällön time2.txt-tiedostoon. 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 - Justkytkimet, 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 käskyjen käyttö

Aiomme kulkea jokaisen päivämäärän ja kissakomennon käytön aikana rsync-komennossa niiden järjestyksessä.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:

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

Vaihtoehtoisesti voisimme määrittää sen seuraavasti:

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

Joka tapauksessa, --log-tiedosto komennon pitäisi pystyä löytämään aiemmin luodun päivätyn lokitiedoston ja kirjoittamaan siihen.

Linkin kohde -tiedosto määritellään seuraavasti:

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

Tämä tarkoittaa, että --link-dest -komennolla annetaan edellisen varmuuskopion hakemisto. Jos varmuuskopiot ovat käynnissä joka toinen tunti ja se on kello 16.00, kun suoritimme tämän käsikirjoituksen, niin -link-dest -komento etsii hakemistoa, joka on luotu kello 14.00 ja siirtää vain sen jälkeen muuttuneet tiedot( jos mitään).

Toistan, että siksi time.txt kopioidaan time2.txt -tiedostoon 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 ajan nimi.

Varmistamme lopuksi, että lokitiedosto kopioidaan 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

Käytämmevarmuuskopio satamaan 12345, jotta rsync-loki otetaan ja sijoitetaan 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äkomennon käyttämisen sijaan, koska rsync-komento oli käynnissä paljon aikaa, joten varmistamme, että meillä on oikea aika, me vain kissaaiemmin luotu tekstiasiakirja.

-automaatio

Käytä Cron-ohjelmaa Linuxissa tai Task Scheduler -ohjelmassa Windowsissa, jotta voit automatisoida rsync-komentosarjan. 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-jakeluohjelmat voivat käyttää pkill-komentoa, joten muista lisätä rsync-komentosarjan alkuun seuraava:

pkill -9 rsync

Salaus

Ei ole vielä tehty. 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 parhaat ominaisuudet on se, että se siirtää vain jokaisen 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 tilannekuvauksen varmuuskopiot offsite-sijainnilla ja salattu lähde- ja kohdekäyttökäyttöäsi varten, anna itsellesi selkäpäitä rsyncin hallintaan ja toteuttamalla kaikkein epäkelvoton tietojen varmuuskopiointiratkaisu.