Kā optimizēt datu sinhronizāciju ar rsync
rsync ir daudzfunkcionāls rīks, kas atvieglo failu pārsūtīšanu pa tīkla savienojumiem un paātrina vietējo direktoriju sinhronizāciju. Lielā elastība padara šo sinhronizācijas rīku par lielisku risinājumu dažādām darbībām ar failiem.
Kas ir rsync?
rsync, kas ir saīsinājums no „remote synchronisation“ (attālā sinhronizācija), ir elastīgs un tīklam piemērots sinhronizācijas rīks Linux vidē. Šo atvērtā koda programmu var izmantot failu un direktoriju sinhronizācijai starp lokālām sistēmām vai tīklos. Rīks izmanto diferencētu datu pārraides metodi, kuras ietvaros tiek pārraidītas tikai tās datu daļas, kas faktiski ir mainītas. Tas samazina datu apjomu, kas jāpārraida, un ievērojami paātrina sinhronizācijas procesu. Pateicoties dažādām opcijām, rsync ļauj precīzi kontrolēt sinhronizācijas darbību. Elastīgā sintakse ļauj veikt gan vienkāršas lokālas kopēšanas, gan sarežģītas tīkla sinhronizācijas.
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 destinationbashAvota ceļš, no kura dati ir jāsinhronizē, 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 sinhronizācijas procesu savām vajadzībām. Visbiežāk izmantotās opcijas ir:
-a(arhīvi): Saglabā rekursīvās failu atļaujas, laika zīmogus, grupas, īpašniekus un īpašās failu īpašības-v(izvērsts): Parāda detalizētu informāciju par sinhronizācijas procesu-r(recursive): sinhronizē direktorijus 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 direktorijā-z(compress): Samazina datu plūsmu tīklā-n–itemize-changes: parāda veicamo izmaiņu sarakstu--delete: Dzēš mērķa direktorijā failus, kas vairs neeksistē avotā--exclude: Izslēdz noteiktus failus vai direktorijus no sinhronizācijas--dry-run: Simulē sinhronizācijas procesu, faktiski nepārnesot failus--progress: Parāda failu pārraides gaitu--partial: Faili, kas ir daļēji pārnesti, paliek mērķa direktorijā, ja pārnešana tiek pārtraukta. 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}bashdir1 saturu var sinhronizēt tajā pašā sistēmā ar dir2, izmantojot -r opciju:
$ rsync -r dir1/ dir2bashAlternatīvi var izmantot opciju -a, kas sinhronizē rekursīvi un iekļauj simboliskās saites, īpašos ierīču failus, izmaiņu laiku, grupas, īpašniekus un atļaujas:
$ rsync -a dir1/ dir2bashPiezīme: Slīpsvītriņa (/) rsync komandas avota direktorija nosaukuma beigās ir svarīga, jo tā norāda , ka jāsinhronizē direktorija saturs, nevis pati direktorija.
$ rsync -a dir1/ dir2bashŠeit ir izvades piemērs:
sending incremental file list
./
file1
file10
file100
file11
file12
file13
file14
file15
file16
file17
file18
. . .bashJa avota direktorija beidzas bez slīpsvītras, avota direktorija tiks kopēta uz mērķa direktoriju:
$ rsync -a dir1 dir2bashŠ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
. . .bashSlīpsvītru izmantojot avota direktorija beigās, tiek nodrošināts, ka sinhronizācijas process noris kā paredzēts un ka avota direktorija saturs nonāk pareizajā mērķa direktorijā.
Kā sinhronizēt rsync ar attālo sistēmu
Attālās sistēmas sinhronizēšana ar rsync parasti nav sarežģīta, ja vien jums ir SSH piekļuve attālajam datoram un nepieciešamā autentifikācijas informācija. 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 savienojums starp abiem datoriem ir pārbaudīts, mapu dir1 var sinhronizēt attālajā datorā. Šajā gadījumā ir jāpārnes pati mape, tāpēc turpmākajā komandā ir izlaists beigu slīpsvītriņš:
$ rsync -a ~/dir1 username@remote_host:destination_directorybashJa direktoriju pārvieto no vietējās sistēmas uz attālo sistēmu, to sauc par „push“ operāciju. Savukārt, ja attālo direktoriju sinhronizē 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_machinebashKādas citas iespējas piedāvā rsync?
rsync standarta darbību var pielāgot, izmantojot zemāk minētās opcijas.
Nesaspiestu failu pārsūtīšana ar rsync
Tīkla slodzi, pārsūtot nesaspiestus failus, var samazināt, izmantojot -z opciju:
$ rsync -az source destinationbashProgresa parādīšana un pārtraukto pārraides atsākšana
Izmantojot -P, varat apvienot opcijas --progress un --partial. Tas sniedz pārskatu par pārraides gaitu un vienlaikus ļauj atsākt pārtrauktas pārraides:
$ rsync -azP source destinationbashŠ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)
. . .bashAtkārtojiet komandu, lai iegūtu īsāku izvadi. Tas ļauj rsync noteikt, vai ir veiktas izmaiņas, balstoties uz izmaiņu laikiem.
$ rsync -azP source destinationbashŠeit ir izvade:
sending incremental file list
sent 818 bytes received 12 bytes 1660.00 bytes/sec
total size is 0 speedup is 0.00bashSaglabājiet direktoriju sinhronizāciju ar rsync
Lai nodrošinātu, ka abas mapes tiek patiešām sinhronizētas, ir nepieciešams mērķa mapē dzēst failus, kas ir izdzēsti no avota mapes. Taču rsync automātiski nedzēš failus no mērķa mapes. To var mainīt, izmantojot opciju --delete. Tomēr šo opciju ir svarīgi lietot ar piesardzī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 sinhronizācijas procesa simulāciju, nedzēšot nevienu reālu failu. Tādējādi jūs varat nodrošināt, ka tiek veiktas tikai vēlamās izmaiņas, nejauši nezaudējot svarīgus datus:
$ rsync -a --delete source destinationbashIzslēgt failus un mapes no sinhronizācijas
Programmā rsync var izmantot opciju --exclude, lai no sinhronizācijas izslēgtu noteiktus failus un direktorijus. Tas ir noderīgi, ja, piemēram, nevēlaties sinhronizēt pagaidu failus, žurnālu failus vai citu saturu.
$ rsync -a --exclude=pattern_to_exclude source destinationbashJa esat norādījis izslēgšanas kritēriju failiem, varat izmantot --include= opciju, lai pārrakstītu šo izslēgšanu noteiktiem failiem, kas atbilst citam kritērijam.
$ rsync -a --exclude=pattern_to_exclude --include=pattern_to_include source destinationbashDublējumu saglabāšana ar rsync
Ar --backup opciju varat saglabāt svarīgu failu dublējumus. To var izmantot kopā ar --backup-dir opciju, lai norādītu direktoriju, kurā jāglabā dublējuma faili:
$ rsync -a --delete --backup --backup-dir=/path/to/backups /path/to/source destinationbashSīkāku pārskatu par dažādiem dublēšanas scenārijiem varat atrast mūsu rakstā par serveru dublēšanu ar rsync.