Rsync-protokolla voi olla melko yksinkertainen käyttää tavallisissa varmuuskopiointi- / synkronointityöissä, mutta jotkut sen edistyneemmistä ominaisuuksista voivat yllättää sinut. Tässä artikkelissa näytämme, kuinka suurimmatkin tietojen kerääjät ja varmuuskopioinnin harrastajat voivat käyttää rsynkronointia yhtenä ratkaisuna kaikkiin tietojen redundanssitarpeisiinsa.
Varoitus: Vain Advanced Geeks
Jos istut siellä ja ajattelet "Mikä hitto on rsync?" tai "Käytän rsynciä vain todella yksinkertaisiin tehtäviin", kannattaa ehkä tutustua edelliseen artikkeliin kuinka varmuuskopioida tietosi Linuxissa rsyncin avulla , joka antaa johdannon rsynciin, opastaa asennuksen läpi ja esittelee sen perustoiminnot. Kun olet ymmärtänyt rsyncin käytön (rehellisesti, se ei ole niin monimutkaista) ja olet tyytyväinen Linux-päätelaitteeseen, olet valmis siirtymään tähän edistyneeseen oppaaseen.
Suoritetaan rsync Windowsissa
Ensin saatetaan Windows-lukijamme samalle sivulle kuin Linux-gurumme. Vaikka rsync on rakennettu toimimaan Unixin kaltaisissa järjestelmissä, ei ole mitään syytä, että sinun ei pitäisi voida käyttää sitä yhtä helposti Windowsissa. Cygwin tuottaa upean Linux-sovellusliittymän, jota voimme käyttää rsyncin suorittamiseen, joten siirry heidän verkkosivustolleen ja lataa 32-bittinen tai 64-bittinen version tietokoneestasi riippuen.
Asennus on yksinkertaista; voit pitää kaikki vaihtoehdot oletusarvoissaan, kunnes pääset “Valitse paketit” -näyttöön.
Nyt sinun on tehtävä samat vaiheet Vimille ja SSH: lle, mutta paketit näyttävät hieman erilaisilta, kun menet valitsemaan ne, joten tässä on joitain kuvakaappauksia:
Vimin asentaminen:
SSH: n asentaminen:
Kun olet valinnut nämä kolme pakettia, jatka napsauttamista, kunnes asennus on valmis. Sitten voit avata Cygwinin napsauttamalla kuvaketta, jonka asennusohjelma asetti työpöydällesi.
rsync-komennot: Yksinkertainen edistyneeseen
Nyt kun Windows-käyttäjät ovat samalla sivulla, katsotaanpa yksinkertainen rsync-komento ja osoitetaan, kuinka joidenkin edistyneiden kytkinten käyttö voi tehdä siitä monimutkaisen.
Oletetaan, että sinulla on joukko tiedostoja, jotka on varmuuskopioitava - kuka ei nykyään? Kytket kannettavan kiintolevyn, jotta voit varmuuskopioida tietokoneesi tiedostot, ja annat seuraavan komennon:
rsync -a / home / geek / files / / mnt / usb / files /
Tai, miltä se näyttäisi Windows-tietokoneessa Cygwinin kanssa:
rsync -a / cygdrive / c / tiedostot / / cygdrive / e / tiedostot /
Melko yksinkertainen, ja siinä vaiheessa ei todellakaan tarvitse käyttää rsync-tiedostoa, koska voit vain vetää ja pudottaa tiedostoja. Jos toisella kiintolevylläsi on jo joitain tiedostoja ja tarvitset vain päivitetyt versiot sekä edellisen synkronoinnin jälkeen luodut tiedostot, tämä komento on kätevä, koska se lähettää uudet tiedot vain kiintolevylle. Suurilla tiedostoilla ja varsinkin tiedostojen siirtämisellä Internetissä on iso juttu.
Tiedostojen varmuuskopioiminen ulkoiselle kiintolevylle ja kiintolevyn pitäminen samassa paikassa kuin tietokoneesi on erittäin huono idea, joten katsotaanpa, mitä tiedostojen lähettäminen Internetin kautta toiseen tietokoneeseen edellyttää ( vuokraamasi, perheenjäsenesi jne.).
rsync -av --delete -e 'ssh -p 12345' / home / geek / files / [email protected]: / home / geek2 / files /
Yllä oleva komento lähettää tiedostosi toiseen tietokoneeseen, jonka IP-osoite on 10.1.1.1. Se poistaa vieraat tiedostot kohdekohdasta, jota ei enää ole lähdekoodihakemistossa, tulostaa siirrettävät tiedostonimet, jotta sinulla on käsitys siitä, mitä tapahtuu, ja tunnelin rynkronoi portin 12345 SSH: n kautta.
-а -в -е --делете
kytkimet ovat alkeellisimpia ja yleisimmin käytettyjä; sinun pitäisi jo tietää paljon niistä, jos luet tätä opetusohjelmaa. Käytään läpi muutamat kytkimet, jotka joskus jätetään huomiotta, mutta uskomattoman hyödyllisiä:
- edistyminen
- Tämän kytkimen avulla voimme nähdä kunkin tiedoston siirron edistymisen. Se on erityisen hyödyllinen siirrettäessä suuria tiedostoja Internetin kautta, mutta se voi tuottaa mielettömän määrän tietoa, kun vain siirrät pieniä tiedostoja nopean verkon kautta.
Rsync-komento
- edistyminen
vaihda varmuuskopioinnin ollessa käynnissä:
--osittainen
- Tämä on toinen kytkin, joka on erityisen hyödyllinen siirrettäessä suuria tiedostoja Internetissä. Jos rsync keskeytyy jostain syystä tiedostojen siirron keskelle, osittain siirretty tiedosto säilytetään kohdehakemistossa ja siirtoa jatketaan siitä, mihin se päättyi, kun rsync-komento on suoritettu uudelleen. Kun siirrät suuria tiedostoja Internetissä (esimerkiksi pari gigatavua), ei ole mitään pahempaa kuin muutaman sekunnin Internet-katkos, sininen näyttö tai inhimillinen virhe laukaisee tiedostosi siirron ja sinun on aloitettava alusta alusta.
-P
- tämä kytkin yhdistää
- edistyminen
ja
--osittainen
, joten käytä sitä sen sijaan, että se tekee rsync-komennostasi pienemmän.
-kanssa
tai
--puristaa
- Tämän kytkimen avulla rsync pakkaa tiedostotiedot siirrettäessä ja vähentää määränpäähän lähetettävien tietojen määrää. Se on oikeastaan melko yleinen kytkin, mutta ei ole läheskään välttämätön, vaan hyödyttää todella vain siirtymisestä 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
- ihmisen luettavissa
- Jos käytät
- edistyminen
kytkin, haluat varmasti käyttää myös tätä. Toisin sanoen, ellet halua muuntaa tavuja megatavuiksi lennossa.
-h
switch muuntaa kaikki tuotetut numerot ihmisen luettavaan muotoon, joten voit todella ymmärtää siirrettävän datan määrän.
-n
tai
--kuivaharjoittelu
- Tämä kytkin on välttämätön tietää, kun kirjoitat ensin rsync-komentosarjaasi ja testaat sitä. Se suorittaa kokeilun, mutta ei todellakaan tee mitään muutoksia - mahdolliset muutokset toimitetaan edelleen normaalisti, joten voit lukea kaiken läpi ja varmistaa, että se näyttää hyvältä, ennen kuin käynnistät komentosarjan tuotantoon.
-R
tai
--suhteellinen
- Tätä kytkintä on käytettävä, jos kohdehakemistoa ei vielä ole olemassa. Käytämme tätä vaihtoehtoa myöhemmin tässä oppaassa, jotta voimme tehdä hakemistoja kohdekoneelle aikaleimoilla kansion nimissä.
--poissulkea
- Tätä kytkintä käytetään linkittämään poissulkemisluetteloon, joka sisältää hakemistopolut, joita et halua varmuuskopioida. Se tarvitsee vain tavallisen tekstitiedoston, jossa on hakemisto tai tiedostopolku kullakin rivillä.
- sisällytä
- Samankaltainen kuin
--poissulkea
, mutta se linkittää tiedostoon, joka sisältää hakemistot ja varmuuskopioitavien tietojen tiedostopolut.
--tilastot
- Ei oikeastaan tärkeä kytkin millään tavalla, mutta jos olet sysadmin, voi olla kätevää tietää jokaisen varmuuskopion yksityiskohtaiset tilastot, jotta voit seurata verkon kautta lähetettävän liikenteen määrää ja vastaavaa.
--loki tiedosto
- Tämän avulla voit lähettää rsync-lähdön lokitiedostoon. Suosittelemme ehdottomasti tätä automaattisille varmuuskopioille, joissa et ole paikalla, jotta voit lukea itse tuotoksen. Anna lokitiedostoille aina kerran vapaa-ajalla varmistaaksesi, että kaikki toimii oikein. Se on myös ratkaiseva kytkin sysadminin käytössä, joten et voi jäädä miettimään, kuinka varmuuskopiot epäonnistuivat, kun jätit harjoittelijan vastuuseen.
Tarkastellaan rsync-komentoamme nyt, kun muutama kytkin on lisätty:
rsync -avzhP --delete --stats --log-file = / home / geek / rsynclogs / backup.log --exclude-from '/home/geek/exclude.txt' -e 'ssh-12345' / home / geek / files / [email protected]: / home / geek2 / files /
Komento on edelleen melko yksinkertainen, mutta emme ole vielä luoneet kunnollista varmuuskopioratkaisua. Vaikka tiedostomme ovatkin nyt kahdessa eri fyysisessä paikassa, tämä varmuuskopio ei suojaa meitä yhdeltä tärkeimmistä tietojen menetyksen syistä: inhimillisiltä virheiltä.
Tilannekuvan varmuuskopiot
Jos poistat vahingossa tiedoston, virus vahingoittaa tiedostojasi tai tapahtuu jotain muuta, jolloin tiedostojasi muutetaan epätoivottavasti, ja sitten suoritat rsync-varmuuskopion, varmuuskopioidut tiedot korvataan ei-toivottujen muutosten kanssa. Kun sellainen tapahtuu (ei jos, mutta milloin), varmuuskopioratkaisu ei tehnyt mitään suojaamaan sinua tietojen menetykseltä.
Rsyncin luoja tajusi tämän ja lisäsi
--varmuuskopioida
ja
- varmuuskopio-ohj
argumentteja, jotta käyttäjät voisivat suorittaa eri varmuuskopioita. Hyvin
ensimmäinen esimerkki rsyncin verkkosivustolta
näyttää komentosarjan, jossa täydellinen varmuuskopio suoritetaan seitsemän päivän välein, ja sitten näiden tiedostojen muutokset varmuuskopioidaan päivittäin erillisiin hakemistoihin. Tämän menetelmän ongelmana on, että tiedostojen palauttamiseksi sinun on palautettava ne tehokkaasti seitsemän eri kertaa. Lisäksi useimmat nörtit suorittavat varmuuskopiot useita kertoja päivässä, joten sinulla voi olla helposti yli 20 erilaista varmuuskopiohakemistoa milloin tahansa. Tiedostojesi palauttaminen ei ole vain tuskaa, vaan jopa varmuuskopioitujen tietojen katselu voi olla erittäin aikaa vievää - sinun on tiedettävä, milloin tiedosto on viimeksi muutettu, jotta löydettäisiin uusin varmuuskopioitu kopio. Kaiken lisäksi on tehotonta suorittaa vain viikoittaisia (tai joissakin tapauksissa harvemmin) lisävarmuuskopioita.
Snapshot-varmuuskopiot pelastukseen! Snapshot-varmuuskopiot eivät ole muuta kuin inkrementaaliset varmuuskopiot, mutta ne käyttävät kovia linkkejä alkuperäisen lähteen tiedostorakenteen säilyttämiseksi. Aluksi voi olla vaikeaa kietoa päätäsi, joten katsotaanpa esimerkkiä.
Teeskentele, että meillä on käynnissä varmuuskopiointiohjelma, joka varmuuskopioi tietomme automaattisesti kahden tunnin välein. Aina kun rsync tekee tämän, se nimeää jokaisen varmuuskopion muodossa: Varmuuskopio-kuukausi-päivä-vuosi-aika.
Joten tyypillisen päivän lopussa meillä olisi kohdeluettelossa oleva kansioiden luettelo seuraavasti:
Kun siirryt mistä tahansa näistä hakemistoista, näet kaikki lähdehakemiston tiedostot täsmälleen sellaisina kuin ne olivat tuolloin. Silti ei ole kaksoiskappaleita kahdessa hakemistossa. rsync toteuttaa tämän käyttämällä kovaa linkitystä
--link-dest = SUORA
Perustelu.
Tietenkin, jotta saisimme nämä kauniisti ja siististi päivätyt hakemistonimet, joudumme hieman parantamaan rsync-komentosarjaamme. Katsotaanpa, mitä tällaisen varmuuskopiointiratkaisun toteuttaminen vaatii, ja sitten selitämme komentosarjan yksityiskohtaisemmin:
#! / Bin / Bash
#copy old time.txt to time2.txt
kyllä | cp ~ / backup / time.txt ~ / backup / time2.txt
# overwrite old time.txt-tiedosto uudella ajalla
echo `date + '% F-% I% p" `> ~ / backup / time.txt
# tee lokitiedosto
echo “”> ~ / backup / rsync-`date + ”% F-% I% p” `.log
#rsync-komento
rsync -avzhPR --chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r --poista --stats --log-file = ~ / backup / rsync-`date + ”% F-% I% p ”` .log --exclude-from '~ / poissulkea.txt' - link-dest = / home / geek2 / files / `cat ~ / backup / time2.txt` -e 'ssh-12345' / home / geek / files / [email protected]: / home / geek2 / files / `päivämäärä +"% F-% I% p "" /
# älä unohda lukea lokitiedostoa ja laittaa se varmuuskopion kanssa
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 snapshot rsync -komentosarja. Jos menetämme sinut jonnekin, leikataan se pala palalta:
Skriptimme ensimmäinen rivi kopioi time.txt-tiedoston time2.txt-tiedostoon. Kyllä-putki on vahvistaa, että haluamme korvata tiedoston. Seuraavaksi otamme nykyisen ajan ja laitamme sen time.txt-tiedostoon. Nämä tiedostot ovat käteviä myöhemmin.
Seuraava rivi tekee rsync-lokitiedoston ja nimeää sen rsync-date.log (missä päivämäärä on todellinen päivämäärä ja aika).
Nyt monimutkainen rsync-komento, josta olemme varoittaneet sinua:
-avzhPR, -e, --delete, --stats, --log-tiedosto, --exclude-from, --link-dest
- Vain kytkimet, joista puhuimme aiemmin; vieritä ylös, jos tarvitset päivitystä.
--- ch on myös d = zu = rwx, D go = rx, fu = rw, F go = r
- Nämä ovat kohdehakemiston käyttöoikeudet. Koska teemme tämän hakemiston keskellä rsync-komentosarjaa, meidän on määritettävä oikeudet, jotta käyttäjä voi kirjoittaa tiedostoja siihen.
Päivämäärä- ja kissa-komentojen käyttö
Käymme läpi kaikki päivämäärä- ja kissa-komennot rsync-komennossa niiden järjestyksessä. Huomaa: Olemme tietoisia siitä, että tällä toiminnolla on muita tapoja, erityisesti käyttämällä muuttujien ilmoittamista, mutta tässä oppaassa olemme päättäneet käyttää tätä menetelmää.
Lokitiedosto määritetään seuraavasti:
~ / backup / rsync-`date + ”% F-% I% p” `.log
Vaihtoehtoisesti olisimme voineet määrittää sen seuraavasti:
~ / backup / rsync-`cat ~ / backup / time.txt`.log
Joko niin,
--loki tiedosto
komennon pitäisi pystyä löytämään aiemmin luotu päivätty lokitiedosto ja kirjoittamaan siihen.
Linkin kohdetiedosto on määritetty seuraavasti:
--link-dest = / home / geek2 / files / `cat ~ / backup / time2.txt '
Tämä tarkoittaa, että
--link-dest
-komennolle annetaan edellisen varmuuskopion hakemisto. Jos suoritamme varmuuskopioita kahden tunnin välein ja kello 16 on tällä hetkellä, kun suoritimme tämän komentosarjan, niin
--link-dest
komento etsii klo 14.00 luotua hakemistoa ja siirtää vain sen jälkeen muuttuneet tiedot (jos sellaisia on).
Toistettavaksi siksi time.txt kopioidaan komentosarjan alkuun time2.txt-tiedostoon, joten
--link-dest
komento voi viitata siihen aikaan myöhemmin.
Kohdehakemisto määritetään seuraavasti:
[email protected]: / home / geek2 / files / `päivämäärä +"% F-% I% p ""
Tämä komento vain asettaa lähdetiedostot hakemistoon, jolla on nykyisen päivämäärän ja kellonimen otsikko.
Lopuksi varmistamme, että kopio lokitiedostosta sijoitetaan 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ämme suojattua kopiota portissa 12345 ottaaksesi rsync-lokin ja sijoittamalla sen oikeaan hakemistoon. Oikean lokitiedoston valitsemiseksi ja varmistaaksesi, että se pääsee oikeaan paikkaan, time.txt-tiedostoon on viitattava cat-komennolla. Jos mietit, miksi päätimme kattaa time.txt-tiedoston sen sijaan, että käyttäisimme vain päivämäärä-komentoa, se johtuu siitä, että paljon aikaa olisi voinut tapahtua rsync-komennon ollessa käynnissä, joten varmistaaksemme, että meillä on oikea aika, me vain aiemmin luoma tekstidokumentti.
Automaatio
Käyttää Cron on Linux tai Tehtävien ajoitus Windowsissa automatisoida rsync-komentosarjasi. Yksi asia, johon sinun on oltava varovainen, on varmistaa, että lopetat käynnissä olevat rsync-prosessit ennen uuden jatkamista. Tehtävien ajoitus näyttää sulkevan kaikki jo käynnissä olevat instanssit automaattisesti, mutta Linux-käyttöjärjestelmässä sinun on oltava hieman luovempi.
Useimmat Linux-jakelut voivat käyttää pkill-komentoa, joten muista vain lisätä seuraava rsync-komentosarjan alkuun:
pkill -9 rsync
Salaus
Ei, emme ole vielä valmiita. Meillä on vihdoin upea (ja ilmainen!) Varmuuskopiointiratkaisu paikallaan, mutta kaikki tiedostomme ovat edelleen alttiita varkauksille. Toivottavasti varmuuskopioit tiedostosi johonkin satojen mailien päähän. Riippumatta siitä, kuinka kaukana oleva paikka on turvallinen, varkaus ja hakkerointi voivat aina olla ongelmia.
Esimerkeissämme olemme tunnistaneet kaiken rsync-liikenteen SSH: n kautta, joten kaikki tiedostomme on salattu kuljetettaessa määränpäähän. Meidän on kuitenkin varmistettava, että kohde on yhtä turvallinen. Muista, että rsync salaa tietosi vain siirrettäessä, mutta tiedostot ovat auki, kun ne saapuvat määränpäähän.
Yksi rsyncin parhaista ominaisuuksista on, että se siirtää vain muutokset jokaisessa tiedostossa. Jos kaikki tiedostosi on salattu ja teet yhden pienen muutoksen, koko tiedosto on lähetettävä uudelleen sen seurauksena, että salaus satunnaistaa kaikki tiedot muutosten jälkeen.
Tästä syystä on parasta / helpoin käyttää jonkin tyyppistä levysalausta, kuten BitLocker Windowsille tai dm-krypta Linuxille. Näin tietosi on suojattu varkauden sattuessa, mutta tiedostoja voidaan siirtää rsyncin avulla, eikä salauksesi estä sen toimintaa. On olemassa muita vaihtoehtoja, jotka toimivat samalla tavalla kuin rsync tai jopa toteuttavat jonkinlaisen sen, kuten Duplicity, mutta niiltä puuttuu joitain ominaisuuksia, joita rsync tarjoaa.
Kun olet määrittänyt tilannevedoksen varmuuskopiot muualle kuin paikalle ja salannut lähde- ja kohdekiintolevyt, anna itsellesi takaa, että hallitset rsync-sovellusta ja otat käyttöön mahdollisimman hölmöimättömän tietojen varmuuskopiointiratkaisun.