rsync on mit­me­külgne tööriist, mis liht­sus­tab failide edas­ta­mist võr­gu­ühen­duste kaudu ja kiirendab kohalike ka­ta­loo­gide sünk­ro­ni­see­ri­mist. Suur paind­lik­kus teeb sellest sünk­ro­ni­see­ri­mis­töö­riis­tast suu­re­pä­rase valiku mit­me­su­guste fai­li­ta­sandi toi­min­gute jaoks.

Mis on rsync?

rsync, lühend sõnadest „remote synch­ro­ni­sa­tion“, on Linuxi kesk­kon­nas kasutatav paindlik ja võrguga ühilduv sünk­ro­ni­see­ri­mis­töö­riist. Seda avatud läh­te­koo­diga programmi saab kasutada failide ja ka­ta­loo­gide sünk­ro­ni­see­ri­miseks nii kohalike süs­teemide vahel kui ka võrkude kaudu. Tööriist kasutab di­fe­rent­siaal­set and­meedas­tus­mee­to­dit, mille puhul edas­ta­takse ainult need andmeosad, mis on te­ge­li­kult muutunud. See vähendab and­me­va­he­tuse mahtu ja kiirendab sünk­ro­ni­see­ri­mis­prot­sessi mär­ki­mis­väär­selt. Tänu mit­me­su­gus­tele va­li­ku­tele võimaldab rsync sünk­ro­ni­see­ri­mise käitumist täpselt juhtida. Paindlik süntaks võimaldab nii lihtsaid kohalikke koopiaid kui ka keerukaid võr­gusünk­ro­ni­see­ri­misi.

Milline on rsync-i süntaks?

Rsync-i käskude süntaks on lihtsa üles­ehi­tu­sega ja sarnaneb SSH, SCP ja CP sün­tak­siga. Põ­hi­struk­tuur on järgmine:

rsync [OPTION] source destination
bash

Andmete sünk­ro­ni­see­ri­mise läh­te­ka­ta­loog si­ses­ta­takse väljale source, siht­ka­ta­loog aga väljale destination. rsync pakub mit­me­su­gu­seid valikuid, mille abil kasutajad saavad sünk­ro­ni­see­ri­mis­prot­sessi oma va­ja­dus­tele kohandada. Kõige sa­ge­da­mini ka­su­ta­ta­vad valikud on:

  • -a (arhiivid): Säilitab re­kur­siiv­sed fai­li­õi­gu­sed, ajamärgid, rühmad, omanikud ja failide eri­või­ma­lu­sed
  • -v (verbose): kuvab ük­sik­as­ja­likku teavet sünk­ro­ni­see­ri­mis­prot­sessi kohta
  • -r (re­kur­siivne): Sünk­ro­ni­see­rib katalooge ja nende sisu re­kur­siiv­selt
  • -u (update): edastab ainult need failid, mis on uuemad kui siht­ka­ta­loo­gis juba olevad
  • -z (compress): vähendab and­me­voogu võrgus
  • -n –itemize-changes: kuvab loendi tehtava­test muu­da­tus­test
  • --delete: Kustutab siht­ka­ta­loo­gist failid, mida allikas enam ei sisalda
  • --exclude: Jätab sünk­ro­ni­see­ri­mi­sest välja teatud failid või ka­ta­loo­gid
  • --dry-run: Si­mu­lee­rib sünk­ro­ni­see­ri­mis­prot­sessi ilma faile te­ge­li­kult üle kandmata
  • --progress: Näitab failide ülekande edenemist
  • --partial: Osaliselt üle kantud failid jäävad siht­ka­ta­loogi, kui ülekanne katkeb. Kui ülekanne jätkub, jät­ka­takse faili viimase seisuga

Näited rsync-i sün­tak­sist

Järgmised rsync-süntaksi näited peaksid aitama paremini mõista, kuidas seda käsku ka­su­ta­takse. Järgmine koo­di­näide loob kataloogi dir1, mis sisaldab 100 tühja testfaili, ning teise tühja kataloogi dir2:

$ cd ~
$ mkdir dir1
$ mkdir dir2
$ touch dir1/file{1..100}
bash

dir1 sisu saab samas süsteemis dir2 sünk­ro­ni­see­rida, kasutades -r valikut:

$ rsync -r dir1/ dir2
bash

Teise või­ma­lu­sena võib kasutada valikut -a, mis sünk­ro­ni­see­rib re­kur­siiv­selt ning hõlmab süm­bo­li­linke, eri­sead­me­faile, muu­da­tus­aegu, gruppe, omanikke ja õigusi:

$ rsync -a dir1/ dir2
bash

Märkus: Kald­kriips (/) rsync-käsu allika kataloogi lõpus on oluline, sest see näitab , et sünk­ro­ni­see­ri­takse kataloogi sisu, mitte kataloog ise.

$ rsync -a dir1/ dir2
bash

Siin on väljundi näide:

sending incremental file list
./
file1
file10
file100
file11
file12
file13
file14
file15
file16
file17
file18
. . .
bash

Kui al­li­ka­ka­ta­loo­gis puudub lõpus kald­kriips, ko­pee­ri­takse al­li­ka­ka­ta­loog siht­ka­ta­loogi:

$ rsync -a dir1 dir2
bash

Siin on tulemus:

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
. . .
bash

Kald­kriipsu ka­su­ta­mine al­li­ka­ka­ta­loogi lõpus tagab, et sünk­ro­ni­see­ri­mis­prot­sess kulgeb ootus­pä­ra­selt ja et al­li­ka­ka­ta­loogi sisu jõuab õigesse siht­ka­ta­loogi.

Kuidas sünk­ro­ni­see­rida rsync kaug­juh­ti­mis­süs­tee­miga

Kaug­seadme sünk­ro­ni­see­ri­mine rsync-iga ei ole ta­va­li­selt keeruline, eeldusel, et sul on SSH-juur­de­pääs kaug­ar­vu­tile ja vajalikud au­ten­ti­mis­and­med. Rsync kasutab kaug­sead­me­tega tur­va­li­seks suht­le­miseks sageli SSH-d (Secure Shell). Selle tööriista ka­su­ta­miseks peab see olema mõlemal poolel ins­tal­li­tud.

Kui SSH-ühendus kahe arvuti vahel on kin­ni­ta­tud, saab kaug­ar­vu­tis sünk­ro­ni­see­rida kausta dir1. Sel juhul tuleb üle kanda tegelik kataloog, mistõttu on järgnevas käsus jäetud ära lõpus olev kald­kriips:

$ rsync -a ~/dir1 username@remote_host:destination_directory
bash

Kui kataloog viiakse ko­ha­li­kust süs­tee­mist üle kaug­juh­ti­mis­süs­teemi, ni­me­ta­takse seda push-ope­rat­sioo­niks. Seevastu kui kaug­juh­ti­mis­süs­teemi kataloog sünk­ro­ni­see­ri­takse kohaliku süs­tee­miga, ni­me­ta­takse seda pull-ope­rat­sioo­niks. Selle süntaks on järgmine:

$ rsync -a username@remote_host:/home/username/dir1 place_to_sync_on_local_machine
bash

Millised muud või­ma­lu­sed on rsync-is veel olemas?

Rsync’i vaikimisi käitumist saab allpool toodud valikute abil veelgi kohandada.

Ti­hen­da­mata failide edas­ta­mine rsync-iga

Ta­va­pä­raste failide edas­ta­misel saab võrgu koormust vähendada, kasutades valikut -z:

$ rsync -az source destination
bash

Edusam­mude kuvamine ja kat­kes­ta­tud edastuste jätkamine

Valikuga -P saate kom­bi­nee­rida valikuid --progress ja --partial. See annab teile ülevaate edastuste kul­ge­mi­sest ja võimaldab samal ajal kat­kes­ta­tud edastusi jätkata:

$ rsync -azP source destination
bash

Siin on tulemus:

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)
. . .
bash

Käivita käsk uuesti, et saada lühem väljund. See võimaldab rsync-il muu­da­tuste aja põhjal kindlaks teha, kas muudatusi on tehtud.

$ rsync -azP source destination
bash

Siin on tulemus:

sending incremental file list
sent 818 bytes received 12 bytes 1660.00 bytes/sec
total size is 0 speedup is 0.00
bash

Hoia ka­ta­loo­gid rsynciga sünk­roo­nis

Selleks et tagada kahe kataloogi tegelik sünk­ro­ni­see­ri­tus, tuleb siht­ka­ta­loo­gist kustutada need failid, mis on al­li­ka­ka­ta­loo­gist eemal­da­tud. Kuid rsync ei kustuta faile siht­ka­ta­loo­gist au­to­maat­selt. Seda saab muuta pa­ra­meet­riga --delete. Siiski tuleb seda pa­ra­meet­rit kasutada et­te­vaat­li­kult, kuna see kustutab siht­ka­ta­loo­gist failid, mida al­li­ka­ka­ta­loo­gis enam ei ole.

Enne selle valiku ka­su­ta­mist peaksite kasutama valikut --dry-run. See võimaldab teil sünk­ro­ni­see­ri­mis­prot­sessi si­mu­lee­rida, ilma et tegelikke faile kus­tu­ta­taks. Nii saate tagada, et tehakse ainult soovitud muu­da­tu­sed, ilma et kao­tak­site kogemata olulisi andmeid:

$ rsync -a --delete source destination
bash

Jäta failid ja ka­ta­loo­gid sünk­ro­ni­see­ri­mi­sest välja

rsync-is saab kasutada valikut --exclude, et jätta teatud failid ja ka­ta­loo­gid sünk­ro­ni­see­ri­mi­sest välja. See on kasulik näiteks juhul, kui ei soovita sünk­ro­ni­see­rida ajutisi faile, logifaile või muud sisu.

$ rsync -a --exclude=pattern_to_exclude source destination
bash

Kui olete määranud failide vä­lis­ta­mise mustri, saate valikuga --include= selle välistuse tühistada teatud failide puhul, mis vastavad teisele mustrile.

$ rsync -a --exclude=pattern_to_exclude --include=pattern_to_include source destination
bash

Salvesta va­ru­koo­piaid rsync-iga

Valik --backup võimaldab teil sal­ves­tada oluliste failide va­ru­koo­piaid. Seda saab kasutada koos valikuga --backup-dir, et määrata kataloog, kuhu va­ru­koo­piad tuleks sal­ves­tada:

$ rsync -a --delete --backup --backup-dir=/path/to/backups /path/to/source destination
bash

Ülevaate eri­ne­va­test va­run­da­mis­või­ma­lus­test leiate meie artiklist, mis käsitleb serverite va­run­da­mist rsync-i abil.

Go to Main Menu