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.
- Se kopioi ja synkronoi tiedostot tehokkaasti etäjärjestelmään tai siitä.
- Tukee linkkien, laitteiden, omistajien, ryhmien ja käyttöoikeuksien kopiointia.
- 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.
- 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
- -v: sanallinen
- -r: kopioi tietoja rekursiivisesti (mutta älä säilytä aikaleimoja ja lupia siirrettäessä tietoja
- -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
- -z: pakkaa tiedostotiedot
- -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.