Kuidas optimeerida andmete sünkroniseerimist rsync-iga
rsync on mitmekülgne tööriist, mis lihtsustab failide edastamist võrguühenduste kaudu ja kiirendab kohalike kataloogide sünkroniseerimist. Suur paindlikkus teeb sellest sünkroniseerimistööriistast suurepärase valiku mitmesuguste failitasandi toimingute jaoks.
Mis on rsync?
rsync, lühend sõnadest „remote synchronisation“, on Linuxi keskkonnas kasutatav paindlik ja võrguga ühilduv sünkroniseerimistööriist. Seda avatud lähtekoodiga programmi saab kasutada failide ja kataloogide sünkroniseerimiseks nii kohalike süsteemide vahel kui ka võrkude kaudu. Tööriist kasutab diferentsiaalset andmeedastusmeetodit, mille puhul edastatakse ainult need andmeosad, mis on tegelikult muutunud. See vähendab andmevahetuse mahtu ja kiirendab sünkroniseerimisprotsessi märkimisväärselt. Tänu mitmesugustele valikutele võimaldab rsync sünkroniseerimise käitumist täpselt juhtida. Paindlik süntaks võimaldab nii lihtsaid kohalikke koopiaid kui ka keerukaid võrgusünkroniseerimisi.
Milline on rsync-i süntaks?
Rsync-i käskude süntaks on lihtsa ülesehitusega ja sarnaneb SSH, SCP ja CP süntaksiga. Põhistruktuur on järgmine:
rsync [OPTION] source destinationbashAndmete sünkroniseerimise lähtekataloog sisestatakse väljale source, sihtkataloog aga väljale destination. rsync pakub mitmesuguseid valikuid, mille abil kasutajad saavad sünkroniseerimisprotsessi oma vajadustele kohandada. Kõige sagedamini kasutatavad valikud on:
-a(arhiivid): Säilitab rekursiivsed failiõigused, ajamärgid, rühmad, omanikud ja failide erivõimalused-v(verbose): kuvab üksikasjalikku teavet sünkroniseerimisprotsessi kohta-r(rekursiivne): Sünkroniseerib katalooge ja nende sisu rekursiivselt-u(update): edastab ainult need failid, mis on uuemad kui sihtkataloogis juba olevad-z(compress): vähendab andmevoogu võrgus-n–itemize-changes: kuvab loendi tehtavatest muudatustest--delete: Kustutab sihtkataloogist failid, mida allikas enam ei sisalda--exclude: Jätab sünkroniseerimisest välja teatud failid või kataloogid--dry-run: Simuleerib sünkroniseerimisprotsessi ilma faile tegelikult üle kandmata--progress: Näitab failide ülekande edenemist--partial: Osaliselt üle kantud failid jäävad sihtkataloogi, kui ülekanne katkeb. Kui ülekanne jätkub, jätkatakse faili viimase seisuga
Näited rsync-i süntaksist
Järgmised rsync-süntaksi näited peaksid aitama paremini mõista, kuidas seda käsku kasutatakse. Järgmine koodinä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}bashdir1 sisu saab samas süsteemis dir2 sünkroniseerida, kasutades -r valikut:
$ rsync -r dir1/ dir2bashTeise võimalusena võib kasutada valikut -a, mis sünkroniseerib rekursiivselt ning hõlmab sümbolilinke, eriseadmefaile, muudatusaegu, gruppe, omanikke ja õigusi:
$ rsync -a dir1/ dir2bashMärkus: Kaldkriips (/) rsync-käsu allika kataloogi lõpus on oluline, sest see näitab , et sünkroniseeritakse kataloogi sisu, mitte kataloog ise.
$ rsync -a dir1/ dir2bashSiin on väljundi näide:
sending incremental file list
./
file1
file10
file100
file11
file12
file13
file14
file15
file16
file17
file18
. . .bashKui allikakataloogis puudub lõpus kaldkriips, kopeeritakse allikakataloog sihtkataloogi:
$ rsync -a dir1 dir2bashSiin 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
. . .bashKaldkriipsu kasutamine allikakataloogi lõpus tagab, et sünkroniseerimisprotsess kulgeb ootuspäraselt ja et allikakataloogi sisu jõuab õigesse sihtkataloogi.
Kuidas sünkroniseerida rsync kaugjuhtimissüsteemiga
Kaugseadme sünkroniseerimine rsync-iga ei ole tavaliselt keeruline, eeldusel, et sul on SSH-juurdepääs kaugarvutile ja vajalikud autentimisandmed. Rsync kasutab kaugseadmetega turvaliseks suhtlemiseks sageli SSH-d (Secure Shell). Selle tööriista kasutamiseks peab see olema mõlemal poolel installitud.
Kui SSH-ühendus kahe arvuti vahel on kinnitatud, saab kaugarvutis sünkroniseerida kausta dir1. Sel juhul tuleb üle kanda tegelik kataloog, mistõttu on järgnevas käsus jäetud ära lõpus olev kaldkriips:
$ rsync -a ~/dir1 username@remote_host:destination_directorybashKui kataloog viiakse kohalikust süsteemist üle kaugjuhtimissüsteemi, nimetatakse seda push-operatsiooniks. Seevastu kui kaugjuhtimissüsteemi kataloog sünkroniseeritakse kohaliku süsteemiga, nimetatakse seda pull-operatsiooniks. Selle süntaks on järgmine:
$ rsync -a username@remote_host:/home/username/dir1 place_to_sync_on_local_machinebashMillised muud võimalused on rsync-is veel olemas?
Rsync’i vaikimisi käitumist saab allpool toodud valikute abil veelgi kohandada.
Tihendamata failide edastamine rsync-iga
Tavapäraste failide edastamisel saab võrgu koormust vähendada, kasutades valikut -z:
$ rsync -az source destinationbashEdusammude kuvamine ja katkestatud edastuste jätkamine
Valikuga -P saate kombineerida valikuid --progress ja --partial. See annab teile ülevaate edastuste kulgemisest ja võimaldab samal ajal katkestatud edastusi jätkata:
$ rsync -azP source destinationbashSiin 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)
. . .bashKäivita käsk uuesti, et saada lühem väljund. See võimaldab rsync-il muudatuste aja põhjal kindlaks teha, kas muudatusi on tehtud.
$ rsync -azP source destinationbashSiin on tulemus:
sending incremental file list
sent 818 bytes received 12 bytes 1660.00 bytes/sec
total size is 0 speedup is 0.00bashHoia kataloogid rsynciga sünkroonis
Selleks et tagada kahe kataloogi tegelik sünkroniseeritus, tuleb sihtkataloogist kustutada need failid, mis on allikakataloogist eemaldatud. Kuid rsync ei kustuta faile sihtkataloogist automaatselt. Seda saab muuta parameetriga --delete. Siiski tuleb seda parameetrit kasutada ettevaatlikult, kuna see kustutab sihtkataloogist failid, mida allikakataloogis enam ei ole.
Enne selle valiku kasutamist peaksite kasutama valikut --dry-run. See võimaldab teil sünkroniseerimisprotsessi simuleerida, ilma et tegelikke faile kustutataks. Nii saate tagada, et tehakse ainult soovitud muudatused, ilma et kaotaksite kogemata olulisi andmeid:
$ rsync -a --delete source destinationbashJäta failid ja kataloogid sünkroniseerimisest välja
rsync-is saab kasutada valikut --exclude, et jätta teatud failid ja kataloogid sünkroniseerimisest välja. See on kasulik näiteks juhul, kui ei soovita sünkroniseerida ajutisi faile, logifaile või muud sisu.
$ rsync -a --exclude=pattern_to_exclude source destinationbashKui olete määranud failide välistamise 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 destinationbashSalvesta varukoopiaid rsync-iga
Valik --backup võimaldab teil salvestada oluliste failide varukoopiaid. Seda saab kasutada koos valikuga --backup-dir, et määrata kataloog, kuhu varukoopiad tuleks salvestada:
$ rsync -a --delete --backup --backup-dir=/path/to/backups /path/to/source destinationbashÜlevaate erinevatest varundamisvõimalustest leiate meie artiklist, mis käsitleb serverite varundamist rsync-i abil.