Rsync (etäsynkronointi): 10 käytännön esimerkkiä Rsync-komennosta Linuxissa


Rsync (Remote Sync) on yleisimmin käytetty komento tiedostojen ja hakemistojen kopioimiseen ja synkronointiin etänä sekä paikallisesti Linux/Unix-järjestelmissä. Rsync-komennon avulla voit kopioida ja synkronoida tietojasi etänä ja paikallisesti hakemistojen, levyjen ja verkkojen välillä, tehdä varmuuskopioita ja peilata kahden Linux-koneen välillä.

Tässä artikkelissa selitetään rsync-komennon 10 perus- ja edistynyttä käyttöä tiedostojen siirtämiseksi etä- ja paikallisesti Linux-pohjaisissa koneissa. Sinun ei tarvitse olla pääkäyttäjä, jos haluat suorittaa rsync-komennon.

  1. Se kopioi ja synkronoi tiedostot tehokkaasti etäjärjestelmään tai siitä.
  2. Tukee linkkien, laitteiden, omistajien, ryhmien ja käyttöoikeuksien kopiointia.
  3. Se on nopeampi kuin scp (Secure Copy), koska rsync käyttää etäpäivitysprotokollaa, jonka avulla voidaan siirtää vain eroja kahden tiedostojoukon välillä. Ensimmäistä kertaa se kopioi tiedoston tai hakemiston koko sisällön lähteestä kohteeseen, mutta seuraavasta kerrasta se kopioi vain muutetut lohkot ja tavut määränpäähän.
  4. Rsync kuluttaa vähemmän kaistanleveyttä, koska se käyttää pakkaus- ja dekompressiomenetelmää samalla, kun molemmat päät lähetetään ja vastaanotetaan.

# rsync options source destination

  1. -v: sanallinen
  2. -r: kopioi tietoja rekursiivisesti (mutta älä säilytä aikaleimoja ja lupia siirrettäessä tietoja
  3. -a: arkistotila, arkistotila mahdollistaa tiedostojen kopioinnin rekursiivisesti ja säilyttää myös symboliset linkit, tiedostojen käyttöoikeudet, käyttäjien ja ryhmien omistukset ja aikaleimat
  4. -z: pakkaa tiedostotiedot
  5. -h: ihmisen luettavissa olevat, tulostettavat numerot ihmisille luettavassa muodossa

Voimme asentaa rsync-paketin seuraavan komennon avulla.

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

1. Kopioi/synkronoi tiedostot ja hakemisto paikallisesti

Tämä seuraava komento synkronoi yhden paikallisen koneen tiedoston yhdestä sijainnista toiseen. Tässä esimerkissä tiedostonimi backup.tar on kopioitava tai synkronoitava kansioon/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

Yllä olevasta esimerkistä näet, että jos kohdetta ei vielä ole olemassa, rsync luo hakemiston automaattisesti määränpäähän.

Seuraava komento siirtää tai synkronoi kaikki tiedostot yhdestä hakemistosta toiseen hakemistoon samalla koneella. Tässä esimerkissä/root/rpmpkgs sisältää joitain rpm-pakettitiedostoja ja haluat, että kyseinen hakemisto kopioidaan/tmp/backups/-kansioon.

 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. Kopioi/synkronoi tiedostot ja hakemisto palvelimelle tai palvelimelta

Tämä komento synkronoi hakemiston paikallisesta koneesta etäkoneeseen. Esimerkiksi: Paikallisella tietokoneellasi on kansio “rpmpkgs”, joka sisältää joitain RPM-paketteja ja haluat paikallisen hakemiston sisällön lähettämisen etäpalvelimelle, voit käyttää seuraavaa komentoa.

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

Tämä komento auttaa synkronoimaan etähakemiston paikalliseen hakemistoon. Tässä tässä esimerkissä etäpalvelimessa oleva hakemisto/home/tarunika/rpmpkgs kopioidaan paikalliselle tietokoneellesi kansioon/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. Rsync SSH: n kautta

Rsyncin avulla voimme käyttää SSH: tä (Secure Shell) tiedonsiirtoon, käyttämällä SSH-protokollaa samalla kun siirrämme tietojamme, voit olla varma, että tietojasi siirretään suojatussa yhteydessä salauksella, jotta kukaan ei voi lukea tietojasi siirrettäessä langan yli Internetissä.

Myös silloin, kun käytämme rsynciä, meidän on annettava käyttäjän/juurisalasana kyseisen tehtävän suorittamiseen, joten SSH-vaihtoehdon käyttäminen lähettää kirjautumistunnuksesi salattuina, jotta salasanasi on turvallinen.

Jos haluat määrittää protokollan rsync-toiminnolla, sinun on annettava "-e" -vaihtoehto käytettävän protokollan nimellä. Tässä tässä esimerkissä käytämme "ssh" ja "-e" -vaihtoehtoa ja suoritamme tiedonsiirron.

 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. Näytä edistyminen siirrettäessä tietoja rsyncin avulla

Osoittaaksemme edistymistä siirtäessäsi tietoja yhdestä koneesta toiseen koneeseen, voimme käyttää siihen ”–progress” -vaihtoehtoa. Se näyttää tiedostot ja jäljellä olevan ajan siirron suorittamiseen.

 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. Käytä –lueta ja –poissulkea -vaihtoehtoja

Näiden kahden vaihtoehdon avulla voimme sisällyttää ja sulkea pois tiedostoja määrittämällä parametrit tällä vaihtoehdolla. Me voimme määrittää ne tiedostot tai hakemistot, jotka haluat sisällyttää synkronointiin, ja sulkea pois tiedostot ja kansiot, joita et halua siirtää.

Tässä esimerkissä rsync-komento sisältää vain ne tiedostot ja hakemistot, jotka alkavat kirjaimella 'R', ja sulkevat pois kaikki muut tiedostot ja hakemistot.

 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. Poista-vaihtoehdon käyttö

Jos tiedostoa tai hakemistoa ei ole lähteessä, mutta se on jo määränpäässä, kannattaa ehkä poistaa kyseinen kohde tiedosto/hakemisto synkronoinnin aikana.

Voimme käyttää ”-delete” -vaihtoehtoa poistaa tiedostoja, joita ei ole lähdekoodihakemistossa.

Lähde ja kohde ovat synkronoituna. Luodaan nyt uusi tiedosto test.txt kohteeseen.

 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

Targetilla on uusi tiedosto nimeltä test.txt. Kun synkronoidaan lähteen kanssa ”–delete” -vaihtoehdon kanssa, se poisti tiedoston test.txt.

7. Aseta siirrettävien tiedostojen enimmäiskoko

Voit määrittää siirrettävän tai synkronoitavan tiedoston maksimikoon. Voit tehdä sen “–max-size” -vaihtoehdolla. Tässä esimerkissä tiedostojen enimmäiskoko on 200 kt, joten tämä komento siirtää vain ne tiedostot, jotka ovat yhtä suuria tai pienempiä kuin 200 kt.

 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. Poista lähdetiedostot automaattisesti onnistuneen siirron jälkeen

Oletetaan, että sinulla on pääverkkopalvelin ja tietojen varmuuskopiointipalvelin, olet luonut päivittäisen varmuuskopion ja synkronoinut sen varmuuskopiointipalvelimesi kanssa. Nyt et halua pitää sitä paikallista varmuuskopiokopiota Web-palvelimellasi.

Joten, odotatko siirron päättymistä ja poistat sitten paikallisen varmuuskopiotiedoston manuaalisesti? Ei tietenkään. Tämä automaattinen poisto voidaan tehdä käyttämällä vaihtoehtoa ”poista lähde-tiedostot”.

 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. Suorita kuivakäynti rsync-toiminnolla

Jos olet aloittelija ja käytät rsync-tiedostoa, etkä tiedä mitä komento oikein tapahtuu. Rsync voi todella sekoittaa kohdekansiosi asioita ja sitten kumoaminen voi olla työläs työ.

Tämän vaihtoehdon käyttäminen ei tee muutoksia vain suorittamalla komennon kuivana ja näyttämällä komennon lähdön, jos lähtö näyttää täsmälleen saman kuin haluat, voit poistaa '-dry-run' -vaihtoehdon komennostasi ja aja terminaalissa.

[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. Aseta kaistanleveyden rajoitus ja siirrä tiedosto

Voit asettaa kaistanleveysrajan siirtäessäsi tietoja koneesta toiseen koneen ”–bwlimit” -vaihtoehdon avulla. Tämä vaihtoehto auttaa meitä rajoittamaan I/O-kaistanleveyttä.

 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

Lisäksi oletuksena rsync synkronoi vain muutetut lohkot ja tavut, jos haluat nimenomaisesti synkronoida koko tiedoston, käytät sen kanssa '-W' -vaihtoehtoa.

 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

Kaikki on nyt rsyncin kanssa, näet man-sivuja lisää vaihtoehtoja. Pysy yhteydessä Tecmintiin saadaksesi jännittäviä ja mielenkiintoisia opetusohjelmia tulevaisuudessa. Jätä kommenttisi ja ehdotuksesi.