Kuinka optimoida tietojen synkronointi rsync-komennolla
rsync on monipuolinen työkalu, joka helpottaa tiedostojen siirtoa verkkoyhteyksien kautta ja nopeuttaa paikallisten hakemistojen synkronointia. Suuren joustavuutensa ansiosta tämä synkronointityökalu on erinomainen valinta monenlaisiin tiedostotason toimintoihin.
Mikä on rsync?
rsync, lyhenne sanoista ”remote synchronisation”, on joustava ja verkko-yhteensopiva synkronointityökalu Linux-ympäristössä. Tätä avoimen lähdekoodin ohjelmaa voidaan käyttää tiedostojen ja hakemistojen synkronointiin paikallisten järjestelmien välillä tai verkkojen yli. Työkalu hyödyntää differentiaalista tiedonsiirtotekniikkaa, jossa siirretään vain ne tiedot, jotka ovat tosiasiallisesti muuttuneet. Tämä minimoi siirrettävän datan määrän ja nopeuttaa synkronointiprosessia huomattavasti. Monipuolisten asetusten ansiosta rsync mahdollistaa synkronointitoimintojen tarkan hallinnan. Joustava syntaksi mahdollistaa sekä yksinkertaiset paikalliset kopioinnit että monimutkaiset verkkosynkronoinnit.
Mikä on rsync-komennon syntaksi?
rsync-komennon syntaksi on rakenteeltaan yksinkertainen ja muistuttaa SSH:n, SCP:n ja CP:n syntaksia. Perusrakenne on seuraava:
rsync [OPTION] source destinationbashLähdepolku, josta tiedot synkronoidaan, syötetään kenttään source, kun taas kohdepolku määritetään kenttään destination. rsync tarjoaa useita vaihtoehtoja, joiden avulla käyttäjät voivat mukauttaa synkronointiprosessin tarpeisiinsa. Yleisimmin käytettyjä vaihtoehtoja ovat:
-a(arkistot): Säilyttää tiedostojen rekursiiviset käyttöoikeudet, aikaleimat, ryhmät, omistajat ja tiedostojen erityisominaisuudet-v(verbose): Näyttää yksityiskohtaisia tietoja synkronointiprosessista-r(recursive): Synkronoi hakemistot ja niiden sisällön rekursiivisesti-u(päivitys): Siirtää vain tiedostot, jotka ovat uudempia kuin kohdekansiossa jo olevat tiedostot-z(compress): Vähentää verkkoliikennettä-n–itemize-changes: Näyttää luettelon tehtävistä muutoksista--delete: Poistaa kohdekansiosta tiedostot, joita ei enää ole lähdekansiossa--exclude: Sulkee tietyt tiedostot tai hakemistot synkronoinnin ulkopuolelle--dry-run: Simuloi synkronointiprosessia siirtämättä tiedostoja--progress: Näyttää tiedostojen siirron etenemisen--partial: Osittain siirretyt tiedostot jäävät kohdekansioon, jos siirto keskeytyy. Kun siirto jatketaan, tiedoston siirto jatkuu siitä, mihin se jäi
Esimerkkejä rsync-syntaksista
Seuraavat esimerkit rsync-komennon syntaksista auttavat ymmärtämään, miten komentoa käytetään. Seuraava koodiesimerkki luo hakemiston dir1, joka sisältää 100 tyhjää testitiedostoa, sekä toisen tyhjän hakemiston dir2:
$ cd ~
$ mkdir dir1
$ mkdir dir2
$ touch dir1/file{1..100}bashKohdan dir1 sisältö voidaan synkronoida samassa järjestelmässä kohdan dir2 kanssa käyttämällä vaihtoehtoa -r:
$ rsync -r dir1/ dir2bashVaihtoehtoisesti voidaan käyttää vaihtoehtoa -a, joka synkronoi tiedostot rekursiivisesti ja sisältää symboliset linkit, erityiset laitetiedostot, muokkausajat, ryhmät, omistajat ja käyttöoikeudet:
$ rsync -a dir1/ dir2bashHuomautus: Rsync-komennon lähdekansion lopussa oleva kauttaviiva (/) on tärkeä , sillä se osoittaa , että synkronoitava on kansion sisältö, ei itse kansio.
$ rsync -a dir1/ dir2bashTässä on esimerkki tuloksesta:
sending incremental file list
./
file1
file10
file100
file11
file12
file13
file14
file15
file16
file17
file18
. . .bashJos lähdekansiossa ei ole loppuviivaa, lähdekansio kopioidaan kohdekansioon:
$ rsync -a dir1 dir2bashTässä on tulos:
sending incremental file list
dir1/
dir1/file1
dir1/file10
dir1/file100
dir1/file11
dir1/file12
dir1/file13
dir1/file14
dir1/file15
dir1/file16
dir1/file17
dir1/file18
. . .bashLähdekansion lopussa olevan kauttaviivan käyttäminen varmistaa, että synkronointiprosessi sujuu odotetusti ja että lähdekansion sisältö päätyy oikeaan kohdekansioon.
Kuinka synkronoida rsync etäjärjestelmän kanssa
Etäjärjestelmän synkronointi rsync-ohjelmalla ei yleensä ole vaikeaa, kunhan sinulla on SSH-yhteys etätietokoneeseen ja tarvittavat tunnistautumistiedot. Rsync käyttää usein SSH:ta (Secure Shell) turvalliseen tiedonsiirtoon etäjärjestelmien kanssa. Jotta tätä työkalua voi käyttää, sen on oltava asennettuna molemmille koneille.
Jos SSH-yhteys näiden kahden tietokoneen välillä on vahvistettu, kansio dir1 voidaan synkronoida etätietokoneelle. Tässä tapauksessa varsinainen hakemisto on siirrettävä, minkä vuoksi seuraavasta komennosta on jätetty pois lopussa oleva kauttaviiva:
$ rsync -a ~/dir1 username@remote_host:destination_directorybashJos hakemisto siirretään paikallisesta järjestelmästä etäjärjestelmään, tätä kutsutaan push-toiminnoksi. Sen sijaan kun etähakemisto synkronoidaan paikallisen järjestelmän kanssa, tätä kutsutaan pull-toiminnoksi. Sen syntaksi on seuraava:
$ rsync -a username@remote_host:/home/username/dir1 place_to_sync_on_local_machinebashMitä muita vaihtoehtoja rsync:ssä on?
rsync-komennon oletusarvoista käyttäytymistä voidaan muokata edelleen alla olevien asetusten avulla.
Pakkaamattomien tiedostojen siirtäminen rsync-komennolla
Verkon kuormitusta pakkaamattomien tiedostojen siirron yhteydessä voidaan vähentää käyttämällä vaihtoehtoa -z:
$ rsync -az source destinationbashLähetyksen etenemisen näyttö ja keskeytyneiden lähetysten jatkaminen
Valinnalla -P voit yhdistää valinnat --progress ja --partial. Näin saat yleiskuvan lähetysten etenemisestä ja voit samalla jatkaa keskeytyneitä lähetyksiä:
$ rsync -azP source destinationbashTässä on tulos:
sending incremental file list
./
file1
0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=99/101)
file10
0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=98/101)
file100
0 100% 0.00kB/s 0:00:00 (xfer#3, to-check=97/101)
file11
0 100% 0.00kB/s 0:00:00 (xfer#4, to-check=96/101)
. . .bashSuorita komento uudelleen, jotta saat lyhyemmän tulosteen. Näin rsync voi määrittää muutosten perusteella, onko muutoksia tehty.
$ rsync -azP source destinationbashTässä on tulos:
sending incremental file list
sent 818 bytes received 12 bytes 1660.00 bytes/sec
total size is 0 speedup is 0.00bashPidä hakemistot synkronoituna rsync-komennolla
Jotta kaksi hakemistoa pysyisivät varmasti synkronoituna, on tarpeen poistaa kohdehakemistosta ne tiedostot, jotka on poistettu lähdehakemistosta. Rsync ei kuitenkaan poista tiedostoja kohdehakemistosta automaattisesti. Tätä toimintaa voidaan muuttaa --delete. Tätä vaihtoehtoa on kuitenkin käytettävä varovasti, sillä se poistaa kohdehakemistosta tiedostot, joita lähdehakemistossa ei enää ole.
Ennen kuin käytät tätä vaihtoehtoa, sinun tulisi käyttää vaihtoehtoa --dry-run. Näin voit simuloida synkronointiprosessia poistamatta varsinaisia tiedostoja. Näin voit varmistaa, että vain halutut muutokset tehdään ilman, että menetät vahingossa tärkeitä tietoja:
$ rsync -a --delete source destinationbashSulje tiedostot ja kansiot synkronoinnin ulkopuolelle
rsync-komennossa voit käyttää --exclude sulkeaksesi tietyt tiedostot ja kansiot synkronoinnin ulkopuolelle. Tämä on hyödyllistä esimerkiksi silloin, kun et halua synkronoida väliaikaisia tiedostoja, lokitiedostoja tai muuta sisältöä.
$ rsync -a --exclude=pattern_to_exclude source destinationbashJos olet määrittänyt tiedostojen poissulkemista koskevan säännön, voit käyttää vaihtoehtoa --include= ohittaaksesi tämän poissulkemisen tiettyjen tiedostojen osalta, jotka vastaavat erilaista sääntöä.
$ rsync -a --exclude=pattern_to_exclude --include=pattern_to_include source destinationbashTallenna varmuuskopiot rsync-komennolla
Vaihtoehdolla --backup voit tallentaa varmuuskopiot tärkeistä tiedostoista. Sitä voidaan käyttää yhdessä vaihtoehdon --backup-dir kanssa, jotta voidaan määrittää kansio, johon varmuuskopiotiedostot tallennetaan:
$ rsync -a --delete --backup --backup-dir=/path/to/backups /path/to/source destinationbashYksityiskohtainen katsaus erilaisiin varmuuskopiointitilanteisiin löytyy artikkelistamme, joka käsittelee palvelinten varmuuskopiointia rsync-ohjelmalla.