Rsync (daljinska sinkronizacija): 10 praktičnih primjera naredbe Rsync u Linuxu


Rsync (Remote Sync) je najčešće korištena naredba za kopiranje i sinkronizaciju datoteka i direktorija na daljinu, kao i lokalno u Linux/Unix sustavima. Uz pomoć naredbe rsync možete kopirati i sinkronizirati podatke na daljinu i lokalno preko direktorija, preko diskova i mreža, izraditi sigurnosne kopije podataka i zrcaljenje između dvaju Linux računala.

Ovaj članak objašnjava 10 osnovnih i naprednih upotreba naredbe rsync za daljinski i lokalni prijenos datoteka na računalima s Linuxom. Ne trebate biti root korisnik da biste pokrenuli rsync naredbu.

  1. Učinkovito kopira i sinkronizira datoteke na ili s udaljenog sustava.
  2. Podržava kopiranje veza, uređaja, vlasnika, grupa i dozvola.
  3. Brži je od scp-a (sigurne kopije), jer rsync koristi protokol daljinskog ažuriranja koji omogućuje prijenos samo razlika između dva skupa datoteka. Prvi put kopira cijeli sadržaj datoteke ili direktorija s izvora na odredište, ali od sljedećeg puta na odredište kopira samo promijenjene blokove i bajtove.
  4. Rsync troši manje propusnosti jer koristi metodu kompresije i dekompresije tijekom slanja i primanja podataka s oba kraja.

# rsync options source destination

  1. -v: opširno
  2. -r: kopira podatke rekurzivno (ali ne čuvajte vremenske oznake i dopuštenje tijekom prijenosa podataka
  3. -a: način arhiviranja, način arhiviranja omogućuje kopiranje datoteka rekurzivno, a također zadržava simboličke poveznice, dozvole datoteka, vlasništvo i vremenske žigove korisnika i grupa
  4. -z: komprimiranje podataka datoteke
  5. -h: čitljivo za ljude, izlazni brojevi u formatu koji je čitljiv za ljude

Paket rsync možemo instalirati uz pomoć sljedeće naredbe.

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

1. Lokalno kopirajte/sinkronizirajte datoteke i direktorij

Sljedeća naredba sinkronizirat će jednu datoteku na lokalnom računalu s jednog mjesta na drugo. Ovdje u ovom primjeru, naziv datoteke backup.tar treba kopirati ili sinhronizirati u/tmp/backups/folder.

 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

U gornjem primjeru možete vidjeti da ako odredište već ne postoji, rsync će automatski stvoriti direktorij za odredište.

Sljedeća naredba će prenijeti ili sinkronizirati sve datoteke iz jednog direktorija u drugi direktorij na istom stroju. Ovdje u ovom primjeru/root/rpmpkgs sadrži neke datoteke rpm paketa i želite da se taj direktorij kopira unutar mape/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/sinkronizirajte datoteke i direktorij na ili s poslužitelja

Ova će naredba sinkronizirati direktorij s lokalnog stroja na udaljeni stroj. Na primjer: Postoji mapa na vašem lokalnom računalu "rpmpkgs" koja sadrži neke RPM pakete i ako želite da se sadržaj lokalnog direktorija pošalje na udaljeni poslužitelj, možete upotrijebiti sljedeću naredbu.

[[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

Ova će vam naredba pomoći da sinkronizirate udaljeni direktorij s lokalnim direktorijom. Ovdje u ovom primjeru, direktorij/home/tarunika/rpmpkgs koji se nalazi na udaljenom poslužitelju kopira se na vaše lokalno računalo u/tmp/myrpms.

 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 preko SSH-a

S rsync-om možemo koristiti SSH (Secure Shell) za prijenos podataka, koristeći SSH protokol tijekom prijenosa naših podataka možete biti sigurni da se vaši podaci prenose u sigurnoj vezi s enkripcijom tako da nitko ne može čitati vaše podatke dok se prenose preko žice na internetu.

Također kada koristimo rsync, trebamo navesti korisničku/root lozinku za izvršenje tog određenog zadatka, pa će upotreba SSH opcije vaše prijave poslati na šifrirani način kako bi vaša lozinka bila sigurna.

Da biste odredili protokol s rsync, morate dati opciju -e s imenom protokola koji želite koristiti. Ovdje u ovom primjeru koristit ćemo "ssh" s opcijom "-e" i izvršiti prijenos podataka.

 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 napredak tijekom prijenosa podataka pomoću rsync

Da bismo prikazali napredak tijekom prijenosa podataka s jednog računala na drugi stroj, možemo koristiti opciju ‘–progress’. Prikazuje datoteke i preostalo vrijeme za dovršetak prijenosa.

 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. Upotreba opcija –uključi i –isključi

Ove dvije opcije omogućuju nam uključivanje i isključivanje datoteka određivanjem parametara pomoću ove opcije pomažu nam da odredimo one datoteke ili direktorije koje želite uključiti u svoju sinkronizaciju i izuzeti datoteke i mape s kojima ne želite prenositi.

Ovdje u ovom primjeru, naredba rsync uključivat će samo one datoteke i direktorij koji započinju s 'R' te će izuzeti sve ostale datoteke i direktorij.

 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. Upotreba opcije –briši

Ako datoteka ili direktorij ne postoji na izvoru, ali već postoji na odredištu, možda ćete htjeti izbrisati tu postojeću datoteku/direktorij na cilju tijekom sinkronizacije.

Možnost ‘–delete’ možemo koristiti za brisanje datoteka koje nisu u izvornom direktoriju.

Izvor i cilj su sinkronizirani. Sada stvaram novu datoteku 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 novu datoteku nazvanu test.txt, koja je prilikom sinkronizacije s izvorom s opcijom ‘–delete’ uklonila datoteku test.txt.

7. Postavite maksimalnu veličinu datoteka koje će se prenijeti

Možete odrediti maksimalnu veličinu datoteke za prijenos ili sinkronizaciju. To možete učiniti s opcijom „–max-size“. Ovdje u ovom primjeru, maksimalna veličina datoteke je 200k, pa će ova naredba prenijeti samo one datoteke koje su jednake ili manje 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. Automatski izbriši izvorne datoteke nakon uspješnog prijenosa

Pretpostavimo sada da imate glavni web poslužitelj i poslužitelj za sigurnosnu kopiju podataka, stvorili ste dnevnu sigurnosnu kopiju i sinhronizirali je sa svojim rezervnim poslužiteljem, sada ne želite zadržati tu lokalnu kopiju sigurnosne kopije na svom web poslužitelju.

Pa, hoćete li pričekati da se prijenos završi, a zatim ručno izbrisati te lokalne sigurnosne datoteke? Naravno da ne. Ovo se automatsko brisanje može izvršiti pomoću opcije ‘–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. Napravite suho trčanje s rsync-om

Ako ste početnik i koristite rsync i ne znate što točno vaša naredba radi. Rsync bi stvarno mogao zabrljati stvari u vašoj odredišnoj mapi, a tada poništavanje može biti dosadan posao.

Korištenje ove opcije neće napraviti nikakve promjene, samo izvršite suho pokretanje naredbe i prikazuje izlaz naredbe, ako izlaz prikazuje potpuno isto što i želite učiniti, možete iz naredbe ukloniti opciju –dry-run 'i trčanje 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. Postavite ograničenje propusnosti i datoteku za prijenos

Ograničenje propusnosti možete postaviti tijekom prijenosa podataka s jednog računala na drugi uz pomoć opcije „–bwlimit“. Ova opcija pomaže nam da ograničimo I/O propusnost.

 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

Također, prema zadanim postavkama rsync sinkronizira samo promijenjene blokove i bajtove, ako izričito želite sinkronizirati cijelu datoteku, tada s njom koristite opciju '-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 sve s rsyncom sada, za više opcija možete vidjeti stranice s uputama. Ostanite povezani s Tecmintom za još uzbudljivijih i zanimljivijih vodiča u budućnosti. Ostavite svoje komentare i prijedloge.