rsync ir daudzfun­kcio­nāls rīks, kas atvieglo failu pār­sū­tī­ša­nu pa tīkla sa­vie­no­ju­miem un paātrina vietējo di­rek­to­ri­ju sin­hro­ni­zā­ci­ju. Lielā elastība padara šo sin­hro­ni­zā­ci­jas rīku par lielisku ri­si­nā­ju­mu dažādām darbībām ar failiem.

Kas ir rsync?

rsync, kas ir sa­īsi­nā­jums no „remote synchro­ni­sa­tion“ (attālā sin­hro­ni­zā­ci­ja), ir elastīgs un tīklam piemērots sin­hro­ni­zā­ci­jas rīks Linux vidē. Šo atvērtā koda programmu var izmantot failu un di­rek­to­ri­ju sin­hro­ni­zā­ci­jai starp lokālām sistēmām vai tīklos. Rīks izmanto di­fe­ren­cē­tu datu pārraides metodi, kuras ietvaros tiek pār­rai­dī­tas tikai tās datu daļas, kas faktiski ir mainītas. Tas samazina datu apjomu, kas jā­pār­rai­da, un ie­vē­ro­ja­mi paātrina sin­hro­ni­zā­ci­jas procesu. Pa­tei­co­ties dažādām opcijām, rsync ļauj precīzi kontrolēt sin­hro­ni­zā­ci­jas darbību. Elastīgā sintakse ļauj veikt gan vien­kār­šas lokālas kopēšanas, gan sa­rež­ģī­tas tīkla sin­hro­ni­zā­ci­jas.

Kāda ir rsync sintakse?

Komandas rsync sintakse ir vienkārša un līdzinās SSH, SCP un CP sintaksei. Tās pamata struktūra ir šāda:

rsync [OPTION] source destination
bash

Avota ceļš, no kura dati ir jā­sin­hro­ni­zē, tiek ievadīts source pozīcijā, savukārt galamērķa ceļš tiek norādīts destination pozīcijā. rsync piedāvā dažādas opcijas, kuras lietotāji var izmantot, lai pielāgotu sin­hro­ni­zā­ci­jas procesu savām va­ja­dzī­bām. Visbiežāk iz­man­to­tās opcijas ir:

  • -a (arhīvi): Saglabā re­kur­sī­vās failu atļaujas, laika zīmogus, grupas, īpaš­nie­kus un īpašās failu īpašības
  • -v (izvērsts): Parāda de­ta­li­zē­tu in­for­mā­ci­ju par sin­hro­ni­zā­ci­jas procesu
  • -r (recursive): sin­hro­ni­zē di­rek­to­ri­jus un to saturu rekursīvi
  • -u (update): Pārsūta tikai tos failus, kas ir jaunāki par tiem, kuri jau atrodas mērķa di­rek­to­ri­jā
  • -z (compress): Samazina datu plūsmu tīklā
  • -n –itemize-changes: parāda veicamo izmaiņu sarakstu
  • --delete: Dzēš mērķa di­rek­to­ri­jā failus, kas vairs neeksistē avotā
  • --exclude: Izslēdz noteiktus failus vai di­rek­to­ri­jus no sin­hro­ni­zā­ci­jas
  • --dry-run: Simulē sin­hro­ni­zā­ci­jas procesu, faktiski ne­pār­ne­sot failus
  • --progress: Parāda failu pārraides gaitu
  • --partial: Faili, kas ir daļēji pārnesti, paliek mērķa di­rek­to­ri­jā, ja pārnešana tiek pār­trauk­ta. Kad pārnešana tiek atsākta, faila pārnešana tiek turpināta no pēdējā stāvokļa

rsync sintakses piemēri

Turpmākie rsync sintakses piemēri palīdzēs labāk izprast, kā šo komandu lietot. Šajā koda piemērā tiek izveidota mape dir1, kurā ir 100 tukši testa faili, kā arī otrā tukša mape dir2“:

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

dir1 saturu var sin­hro­ni­zēt tajā pašā sistēmā ar dir2, iz­man­to­jot -r opciju:

$ rsync -r dir1/ dir2
bash

Al­ter­na­tī­vi var izmantot opciju -a, kas sin­hro­ni­zē rekursīvi un iekļauj sim­bo­lis­kās saites, īpašos ierīču failus, izmaiņu laiku, grupas, īpaš­nie­kus un atļaujas:

$ rsync -a dir1/ dir2
bash

Piezīme: Slīpsvīt­ri­ņa (/) rsync komandas avota di­rek­to­ri­ja nosaukuma beigās ir svarīga, jo tā norāda , ka jā­sin­hro­ni­zē di­rek­to­ri­ja saturs, nevis pati di­rek­to­ri­ja.

$ rsync -a dir1/ dir2
bash

Šeit ir izvades piemērs:

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

Ja avota di­rek­to­ri­ja beidzas bez slīpsvīt­ras, avota di­rek­to­ri­ja tiks kopēta uz mērķa di­rek­to­ri­ju:

$ rsync -a dir1 dir2
bash

Šeit ir izvade:

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

Slīpsvīt­ru iz­man­to­jot avota di­rek­to­ri­ja beigās, tiek no­dro­ši­nāts, ka sin­hro­ni­zā­ci­jas process noris kā paredzēts un ka avota di­rek­to­ri­ja saturs nonāk pareizajā mērķa di­rek­to­ri­jā.

Kā sin­hro­ni­zēt rsync ar attālo sistēmu

Attālās sistēmas sin­hro­ni­zē­ša­na ar rsync parasti nav sarežģīta, ja vien jums ir SSH piekļuve attālajam datoram un ne­pie­cie­ša­mā au­ten­ti­fi­kā­ci­jas in­for­mā­ci­ja. Rsync bieži izmanto SSH (Secure Shell) drošai saziņai ar attālajām sistēmām. Lai izmantotu šo rīku, tas jāinstalē abās pusēs.

Ja SSH sa­vie­no­jums starp abiem datoriem ir pār­bau­dīts, mapu dir1 var sin­hro­ni­zēt attālajā datorā. Šajā gadījumā ir jāpārnes pati mape, tāpēc turp­mā­ka­jā komandā ir izlaists beigu slīpsvīt­riņš:

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

Ja di­rek­to­ri­ju pārvieto no vietējās sistēmas uz attālo sistēmu, to sauc par „push“ operāciju. Savukārt, ja attālo di­rek­to­ri­ju sin­hro­ni­zē ar vietējo sistēmu, to sauc par „pull“ operāciju. Sintakse šim nolūkam ir šāda:

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

Kādas citas iespējas piedāvā rsync?

rsync standarta darbību var pielāgot, iz­man­to­jot zemāk minētās opcijas.

Ne­sas­pies­tu failu pār­sū­tī­ša­na ar rsync

Tīkla slodzi, pārsūtot ne­sas­pies­tus failus, var samazināt, iz­man­to­jot -z opciju:

$ rsync -az source destination
bash

Progresa pa­rā­dī­ša­na un pār­trauk­to pārraides atsākšana

Iz­man­to­jot -P, varat apvienot opcijas --progress un --partial. Tas sniedz pārskatu par pārraides gaitu un vien­lai­kus ļauj atsākt pār­trauk­tas pārraides:

$ rsync -azP source destination
bash

Šeit ir izvade:

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

At­kār­to­jiet komandu, lai iegūtu īsāku izvadi. Tas ļauj rsync noteikt, vai ir veiktas izmaiņas, bal­sto­ties uz izmaiņu laikiem.

$ rsync -azP source destination
bash

Šeit ir izvade:

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

Sa­gla­bā­jiet di­rek­to­ri­ju sin­hro­ni­zā­ci­ju ar rsync

Lai no­dro­ši­nā­tu, ka abas mapes tiek patiešām sin­hro­ni­zē­tas, ir ne­pie­cie­šams mērķa mapē dzēst failus, kas ir izdzēsti no avota mapes. Taču rsync au­to­mā­tis­ki nedzēš failus no mērķa mapes. To var mainīt, iz­man­to­jot opciju --delete. Tomēr šo opciju ir svarīgi lietot ar pie­sar­dzī­bu, jo tā dzēš mērķa mapē failus, kas vairs neeksistē avotā.

Pirms izmantot šo opciju, jums vajadzētu izmantot --dry-run opciju. Tas ļaus jums veikt sin­hro­ni­zā­ci­jas procesa si­mu­lā­ci­ju, nedzēšot nevienu reālu failu. Tādējādi jūs varat no­dro­ši­nāt, ka tiek veiktas tikai vēlamās izmaiņas, nejauši ne­zau­dē­jot svarīgus datus:

$ rsync -a --delete source destination
bash

Izslēgt failus un mapes no sin­hro­ni­zā­ci­jas

Programmā rsync var izmantot opciju --exclude, lai no sin­hro­ni­zā­ci­jas izslēgtu noteiktus failus un di­rek­to­ri­jus. Tas ir noderīgi, ja, piemēram, ne­vē­la­ties sin­hro­ni­zēt pagaidu failus, žurnālu failus vai citu saturu.

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

Ja esat norādījis iz­slēg­ša­nas kritēriju failiem, varat izmantot --include= opciju, lai pār­rak­stī­tu šo iz­slēg­ša­nu no­teik­tiem failiem, kas atbilst citam kri­tē­ri­jam.

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

Dublējumu sa­gla­bā­ša­na ar rsync

Ar --backup opciju varat saglabāt svarīgu failu dub­lē­ju­mus. To var izmantot kopā ar --backup-dir opciju, lai norādītu di­rek­to­ri­ju, kurā jāglabā dublējuma faili:

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

Sīkāku pārskatu par dažādiem dub­lē­ša­nas sce­nā­ri­jiem varat atrast mūsu rakstā par serveru dublēšanu ar rsync.

Go to Main Menu