Rsync (oddaljena sinhronizacija): 10 praktičnih primerov ukaza Rsync v Linuxu


Rsync (Remote Sync) je najpogosteje uporabljen ukaz za kopiranje in sinhronizacijo datotek in imenikov na daljavo in lokalno v sistemih Linux/Unix. S pomočjo ukaza rsync lahko kopirate in sinhronizirate podatke na daljavo in lokalno po imenikih, diskih in omrežjih, varnostno kopirate in zrcalite podatke med dvema računalnikoma Linux.

Ta članek pojasnjuje 10 osnovnih in naprednih načinov uporabe ukaza rsync za prenos datotek na daljavo in lokalno v računalnikih z Linuxom. Za zagon ukaza rsync vam ni treba biti root uporabnik.

  1. Učinkovito kopira in sinhronizira datoteke v oddaljeni sistem ali iz njega.
  2. Podpira kopiranje povezav, naprav, lastnikov, skupin in dovoljenj.
  3. Je hitrejši od scp (varno kopiranje), ker rsync uporablja protokol za oddaljeno posodabljanje, ki omogoča prenos samo razlik med dvema nizoma datotek. Prvič kopira celotno vsebino datoteke ali imenika iz vira na cilj, od naslednjega pa na cilj kopira samo spremenjene bloke in bajte.
  4. Rsync porabi manj pasovne širine, saj uporablja način stiskanja in dekompresije med pošiljanjem in prejemanjem podatkov na obeh koncih.

# rsync options source destination

  1. -v: podroben
  2. -r: rekurzivno kopira podatke (vendar med prenosom podatkov ne shranjujte časovnih žigov in dovoljenj
  3. -a: način arhiviranja, način arhiviranja omogoča rekurzivno kopiranje datotek, hkrati pa ohranja simbolične povezave, dovoljenja datotek, lastništva uporabnikov in skupin ter časovne žige
  4. -z: stisnite podatke o datoteki
  5. -h: človeško berljive, izhodne številke v človeško berljivi obliki

Paket rsync lahko namestimo s pomočjo naslednjega ukaza.

# yum install rsync (On Red Hat based systems)
# apt-get install rsync (On Debian based systems)

1. Lokalno kopirajte/sinhronizirajte datoteke in imenik

Ta naslednji ukaz bo sinhroniziral eno datoteko na lokalnem računalniku z ene lokacije na drugo. V tem primeru je treba datoteko backup.tar kopirati ali sinhronizirati v mapo/tmp/backups /.

 rsync -zvh backup.tar /tmp/backups/

created directory /tmp/backups

backup.tar

sent 14.71M bytes  received 31 bytes  3.27M bytes/sec

total size is 16.18M  speedup is 1.10

V zgornjem primeru lahko vidite, da če cilj še ne obstaja, bo rsync samodejno ustvaril imenik za cilj.

Naslednji ukaz bo prenesel ali sinhroniziral vse datoteke iz enega imenika v drug imenik iste naprave. Tu v tem primeru/root/rpmpkgs vsebuje nekaj datotek paketov rpm in želite, da se ta imenik kopira v mapo/tmp/backups /.

 rsync -avzh /root/rpmpkgs /tmp/backups/

sending incremental file list

rpmpkgs/

rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm

rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm

rpmpkgs/nagios-3.5.0.tar.gz

rpmpkgs/nagios-plugins-1.4.16.tar.gz

sent 4.99M bytes  received 92 bytes  3.33M bytes/sec

total size is 4.99M  speedup is 1.00

2. Kopirajte/sinhronizirajte datoteke in imenik v strežnik ali iz njega

Ta ukaz bo sinhroniziral imenik z lokalnega računalnika na oddaljeni računalnik. Na primer: V vašem lokalnem računalniku je mapa\"rpmpkgs", ki vsebuje nekaj paketov RPM in če želite, da se vsebina lokalnega imenika pošlje na oddaljeni strežnik, lahko uporabite naslednji ukaz.

[[email ]$ rsync -avz rpmpkgs/ [email :/home/

[email 's password:

sending incremental file list

./

httpd-2.2.3-82.el5.centos.i386.rpm

mod_ssl-2.2.3-82.el5.centos.i386.rpm

nagios-3.5.0.tar.gz

nagios-plugins-1.4.16.tar.gz

sent 4993369 bytes  received 91 bytes  399476.80 bytes/sec

total size is 4991313  speedup is 1.00

Ta ukaz vam bo pomagal sinhronizirati oddaljeni imenik z lokalnim imenikom. Tu v tem primeru se v vašem lokalnem računalniku v/tmp/myrpms kopira imenik/home/tarunika/rpmpkgs, ki je na oddaljenem strežniku.

 rsync -avzh [email :/home/tarunika/rpmpkgs /tmp/myrpms

[email 's password:

receiving incremental file list

created directory /tmp/myrpms

rpmpkgs/

rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm

rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm

rpmpkgs/nagios-3.5.0.tar.gz

rpmpkgs/nagios-plugins-1.4.16.tar.gz

sent 91 bytes  received 4.99M bytes  322.16K bytes/sec

total size is 4.99M  speedup is 1.00

3. Sinhronizacija prek SSH

Z rsync lahko za prenos podatkov uporabimo SSH (Secure Shell), pri čemer s protokolom SSH med prenosom naših podatkov zagotovite, da se vaši podatki prenašajo v varni povezavi s šifriranjem, tako da nihče ne more prebrati vaših podatkov med prenosom prek žice na internetu.

Tudi ko uporabljamo rsync, moramo za to določeno nalogo vnesti uporabniško/korensko geslo, zato bo uporaba možnosti SSH vaše prijave poslala šifrirano, da bo vaše geslo varno.

Če želite določiti protokol z rsync, morate dati možnost\"- e" z imenom protokola, ki ga želite uporabiti. Tu v tem primeru bomo uporabili\"ssh" z možnostjo\"- e" in izvedli prenos podatkov.

 rsync -avzhe ssh [email :/root/install.log /tmp/

[email 's password:

receiving incremental file list

install.log

sent 30 bytes  received 8.12K bytes  1.48K bytes/sec

total size is 30.74K  speedup is 3.77
 rsync -avzhe ssh backup.tar [email :/backups/

[email 's password:

sending incremental file list

backup.tar

sent 14.71M bytes  received 31 bytes  1.28M bytes/sec

total size is 16.18M  speedup is 1.10

4. Pokažite napredek med prenosom podatkov z rsync

Če želite prikazati napredek med prenosom podatkov iz ene naprave v drugo, lahko zanjo uporabimo možnost ‘–progress’. Prikaže datoteke in preostali čas za prenos.

 rsync -avzhe ssh --progress /home/rpmpkgs [email :/root/rpmpkgs

[email 's password:

sending incremental file list

created directory /root/rpmpkgs

rpmpkgs/

rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm

           1.02M 100%        2.72MB/s        0:00:00 (xfer#1, to-check=3/5)

rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm

          99.04K 100%  241.19kB/s        0:00:00 (xfer#2, to-check=2/5)

rpmpkgs/nagios-3.5.0.tar.gz

           1.79M 100%        1.56MB/s        0:00:01 (xfer#3, to-check=1/5)

rpmpkgs/nagios-plugins-1.4.16.tar.gz

           2.09M 100%        1.47MB/s        0:00:01 (xfer#4, to-check=0/5)

sent 4.99M bytes  received 92 bytes  475.56K bytes/sec

total size is 4.99M  speedup is 1.00

5. Uporaba –vključi in –izključi možnosti

Ti dve možnosti nam omogočata vključitev in izključitev datotek z določitvijo parametrov s to možnostjo nam pomagata določiti tiste datoteke ali imenike, ki jih želite vključiti v sinhronizacijo, in izključiti datoteke in mape, za katere nočete, da jih želite prenesti.

V tem primeru bo ukaz rsync vključeval samo tiste datoteke in imenik, ki se začne z „R“, in izključil vse druge datoteke in imenik.

 rsync -avze ssh --include 'R*' --exclude '*' [email :/var/lib/rpm/ /root/rpm

[email 's password:

receiving incremental file list

created directory /root/rpm

./

Requirename

Requireversion

sent 67 bytes  received 167289 bytes  7438.04 bytes/sec

total size is 434176  speedup is 2.59

6. Uporaba možnosti –briši

Če datoteka ali imenik ne obstaja v izvoru, vendar že obstaja na cilju, boste morda želeli ob sinhronizaciji izbrisati obstoječo datoteko/imenik na cilju.

Možnost ‘–delete’ lahko uporabimo za brisanje datotek, ki jih ni v izvornem imeniku.

Vir in cilj sta sinhronizirana. Zdaj ustvarjam novo datoteko test.txt na cilju.

 touch test.txt
 rsync -avz --delete [email :/var/lib/rpm/ .
Password:
receiving file list ... done
deleting test.txt
./
sent 26 bytes  received 390 bytes  48.94 bytes/sec
total size is 45305958  speedup is 108908.55

Target ima novo datoteko, imenovano test.txt, ki je pri sinhronizaciji z izvorom z možnostjo – –deletirala datoteko test.txt.

7. Nastavite največjo velikost datotek za prenos

Določite lahko največjo velikost datoteke, ki jo želite prenesti ali sinhronizirati. To lahko storite z možnostjo\"- max-size". Tu je v tem primeru največja velikost datoteke 200k, zato bo ta ukaz prenesel samo tiste datoteke, ki so enake ali manjše od 200k.

 rsync -avzhe ssh --max-size='200k' /var/lib/rpm/ [email :/root/tmprpm

[email 's password:

sending incremental file list

created directory /root/tmprpm

./

Conflictname

Group

Installtid

Name

Provideversion

Pubkeys

Requireversion

Sha1header

Sigmd5

Triggername

__db.001

sent 189.79K bytes  received 224 bytes  13.10K bytes/sec

total size is 38.08M  speedup is 200.43

8. Samodejno izbriši izvorne datoteke po uspešnem prenosu

Recimo, da imate glavni spletni strežnik in strežnik za varnostno kopiranje podatkov, ustvarili ste dnevno varnostno kopijo in jo sinhronizirali s svojim varnostnim strežnikom, zdaj pa ne želite te lokalne kopije varnostne kopije hraniti v spletnem strežniku.

Torej, boste počakali, da se prenos zaključi, in nato ročno izbrisali te lokalne varnostne datoteke? Seveda ne. To samodejno brisanje lahko izvedete z možnostjo „–remove-source-files“.

 rsync --remove-source-files -zvh backup.tar /tmp/backups/

backup.tar

sent 14.71M bytes  received 31 bytes  4.20M bytes/sec

total size is 16.18M  speedup is 1.10

 ll backup.tar

ls: backup.tar: No such file or directory

9. Naredite suh tek z rsync

Če ste novinec in uporabljate rsync in ne veste, kaj točno bo naredil vaš ukaz. Rsync bi res lahko pokvaril stvari v ciljni mapi in potem je razveljavitev lahko dolgočasno delo.

Uporaba te možnosti ne bo povzročila nobenih sprememb, samo izvede suhi zagon ukaza in prikaže izhod ukaza, če izhod pokaže popolnoma enako, kot želite storiti, lahko iz ukaza odstranite možnost '-dry-run' in zaženite na terminalu.

[email ]# rsync --dry-run --remove-source-files -zvh backup.tar /tmp/backups/

backup.tar

sent 35 bytes  received 15 bytes  100.00 bytes/sec

total size is 16.18M  speedup is 323584.00 (DRY RUN)

10. Nastavite omejitev pasovne širine in datoteko za prenos

Omejitev pasovne širine lahko nastavite med prenosom podatkov z ene naprave na drugo s pomočjo možnosti – –bwlimit. Ta možnost nam pomaga omejiti I/O pasovno širino.

 rsync --bwlimit=100 -avzhe ssh  /var/lib/rpm/  [email :/root/tmprpm/
[email 's password:
sending incremental file list
sent 324 bytes  received 12 bytes  61.09 bytes/sec
total size is 38.08M  speedup is 113347.05

Prav tako privzeto rsync sinhronizira samo spremenjene bloke in bajte, če želite izrecno sinhronizirati celotno datoteko, potem z njo uporabite možnost '-W'.

 rsync -zvhW backup.tar /tmp/backups/backup.tar
backup.tar
sent 14.71M bytes  received 31 bytes  3.27M bytes/sec
total size is 16.18M  speedup is 1.10

To je vse z rsync zdaj, za več možnosti si lahko ogledate strani z navodili. Ostanite povezani s Tecmintom za bolj razburljive in zanimive vadnice v prihodnosti. Pustite svoje komentarje in predloge.