16 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 tietosi etänä ja paikallisesti hakemistojen, levyjen ja verkkojen välillä, tehdä tietojen varmuuskopioita ja peilata kahden Linux-koneen välillä.
Tässä artikkelissa selitetään 16 rsync-komennon perus- ja lisäkäyttötapoja tiedostojen etä- ja paikallissiirtoon Linux-pohjaisissa koneissa. Sinun ei tarvitse olla root-käyttäjä, jotta voit suorittaa rsync-komennon.
Rsync Commandin edut
Se tarjoaa useita etuja, mukaan lukien:
- Tehokas tiedostonsiirto – rsync käyttää delta-siirtoalgoritmia, mikä tarkoittaa, että se siirtää vain lähde- ja kohdetiedostojen väliset erot, mikä vähentää merkittävästi siirrettävän tiedon määrää, mikä tekee siitä tehokkaan suurten tiedostojen tai hakemistojen synkronoinnissa.
- Etäsynkronointi – rsync tukee sekä paikallista että etätiedostojen siirtoa SSH:n kautta, mikä mahdollistaa synkronoinnin paikallisten ja etäjärjestelmien välillä tai peilaa hakemistoja useissa koneissa.
- Inkrementaaliset varmuuskopiot – rsync soveltuu hyvin vaiheittaiseen varmuuskopiointiin, koska se luo ja päivittää varmuuskopioita tehokkaasti siirtämällä vain uusia tai muokattuja tiedostoja.
- Säilyttää tiedostojen käyttöoikeudet – rsync voi säilyttää erilaisia tiedostomääritteitä, kuten luvat, omistajuuden, aikaleimat ja symboliset linkit, mikä varmistaa, että kopioidut tiedostot säilyttävät alkuperäiset ominaisuudet kohteessa.
- Kaistanleveyden hallinta – rsyncin avulla voit rajoittaa kaistanleveyden käyttöä tiedostonsiirron aikana, koska se käyttää pakkaus- ja purkumenetelmää, kun se lähettää ja vastaanottaa tietoja molemmissa päissä.
- Nopeampi – rsync voi olla nopeampi kuin scp (Secure Copy) tiedostojen siirtämisessä, etenkin kun synkronoidaan suuria hakemistoja tai kun käsitellään tiedostoja, jotka on jo osittain siirretty tai jotka ovat olemassa kohteessa.
Rsync-komennon syntaksi
rsync-komento noudattaa seuraavaa syntaksia:
rsync [OPTIONS] SOURCE DESTINATION
Tässä on selitys eri komponenteista ja vaihtoehdoista, joita käytetään rsync-komentojen kanssa:
-v
– Monisanainen tuloste, joka näyttää yksityiskohtaiset tiedot siirrosta.-r
– kopioi tiedot rekursiivisesti (mutta ei säilytä aikaleimoja ja käyttöoikeuksia tiedonsiirron aikana.-a
– arkistointitila, joka mahdollistaa tiedostojen kopioinnin rekursiivisesti ja säilyttää myös symboliset linkit, tiedostojen käyttöoikeudet, käyttäjien ja ryhmien omistajuudet ja aikaleimat.-z
– Pakkaa tiedostot siirron aikana vähentääksesi verkon käyttöä.-h
– ihmisen luettavissa olevat, tulostettavat numerot luettavassa muodossa.-P
– Näytä edistyminen siirron aikana.LÄHDE
– Määrittää siirrettävät lähdetiedostot tai -hakemistot, jotka voivat olla paikallinen tai etäsijainti.DESTINATION
– Määrittää kohdepolun, johon tiedostot tai hakemistot kopioidaan. Kuten lähde, se voi olla paikallinen polku tai etäsijainti.
Asenna Rsync Linux-järjestelmään
Voimme asentaa rsync-paketin seuraavan paketinhallinnan avulla Linux-jakelusi mukaan.
sudo apt install rsync [On Debian, Ubuntu and Mint]
sudo yum install rsync [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/rsync [On Gentoo Linux]
sudo apk add rsync [On Alpine Linux]
sudo pacman -S rsync [On Arch Linux]
sudo zypper install rsync [On OpenSUSE]
1. Kopioi/synkronoi tiedosto paikallisesti
Voit kopioida tai synkronoida tiedoston paikallisesti käyttämällä seuraavaa komentoa, joka synkronoi yksittäisen tiedoston paikallisessa koneessa paikasta toiseen.
Tässä esimerkissä tiedostonimi backup.tar on kopioitava tai synkronoitava /tmp/backups/-kansioon.
[root@tecmint]# rsync -zvh backup.tar.gz /tmp/backups/
created directory /tmp/backups
backup.tar.gz
sent 224.54K bytes received 70 bytes 449.21K bytes/sec
total size is 224.40K speedup is 1.00
Yllä olevassa esimerkissä voit nähdä, että jos kohdetta ei ole jo olemassa, rsync luo automaattisesti hakemiston kohteelle.
2. Kopioi/synkronoi hakemisto paikallisesti
Seuraava komento siirtää tai synkronoi kaikki tiedostot yhdestä hakemistosta eri hakemistoon samassa koneessa.
Tässä esimerkissä /root/rpmpkgs sisältää joitain rpm-pakettitiedostoja, ja haluat kopioida kyseisen hakemiston /tmp/backups/-kansioon.
[root@tecmint]# rsync -avzh /root/rpmpkgs /tmp/backups/
sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm
sent 3.47M bytes received 96 bytes 2.32M bytes/sec
total size is 3.74M speedup is 1.08
3. Kopioi hakemisto paikallisesta etäpalvelimeen
Jos haluat kopioida hakemiston paikalliselta palvelimelta etäpalvelimelle, voit käyttää seuraavaa komentoa, joka synkronoi hakemiston paikallisesta etäkoneeseen.
Esimerkiksi jos paikallisessa tietokoneessasi on kansio "rpmpkgs", joka sisältää joitain RPM-paketteja ja jos haluat paikallisen hakemiston sisällön lähettävän etäpalvelimeen, voit käyttää seuraavaa komentoa.
rsync -avzh /root/rpmpkgs [email :/root/
The authenticity of host '192.168.0.141 (192.168.0.141)' can't be established.
ED25519 key fingerprint is SHA256:bH2tiWQn4S5o6qmZhmtXcBROV5TU5H4t2C42QDEMx1c.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.0.141' (ED25519) to the list of known hosts.
[email 's password:
sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm
sent 3.74M bytes received 96 bytes 439.88K bytes/sec
total size is 3.74M speedup is 1.00
4. Kopioi hakemisto etäpalvelimesta paikalliseen palvelimeen
Tämä komento auttaa sinua synkronoimaan etähakemiston paikalliseen hakemistoon. Tässä esimerkissä etäpalvelimella olevaa hakemistoa /root/rpmpkgs kopioidaan paikalliseen tietokoneellesi kansioon /tmp/myrpms.
rsync -avzh [email :/root/rpmpkgs /tmp/myrpms
[email 's password:
receiving incremental file list
created directory /tmp/myrpms
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm
sent 104 bytes received 3.49M bytes 997.68K bytes/sec
total size is 3.74M speedup is 1.07
5. Rsync SSH:n kautta
rsyncin avulla voimme käyttää SSH:ta (Secure Shell) tiedonsiirtoon, SSH-protokollaa siirtäessäsi tietojamme voit olla varma, että tietosi siirretään suojatussa yhteydessä salauksella, jotta kukaan ei voi lukea tietojasi, kun niitä siirretään Internetissä.
Myös kun käytämme rsyncä, meidän on annettava käyttäjän/root-salasana kyseisen tehtävän suorittamiseksi, joten käytämme SSH:ta. -vaihtoehto lähettää kirjautumistietosi salattuna, jotta salasanasi pysyy turvassa.
Jos haluat käyttää rsync-komentoa SSH:n -ominaisuuden sijaan, voit määrittää etäkomentotulkin komentotulkkikomennon -e
-vaihtoehdolla, joka on tavallisesti ssh, kuten kuvassa.
rsync [OPTIONS] -e ssh /path/to/source user@remote:/path/to/destination
6. Kopioi tiedosto etäpalvelimelta paikalliselle palvelimelle SSH:n avulla
Voit synkronoida tiedoston etäpalvelimelta paikalliseen palvelimeen määrittämällä protokollan rsyncillä käyttämällä -e -vaihtoehtoa ja protokollan nimeä, jota haluat käyttää.
Tässä esimerkissä käytämme "ssh" ja "-e" -vaihtoehtoa ja suoritamme tiedonsiirron.
rsync -avzhe ssh [email :/root/anaconda-ks.cfg /tmp
[email 's password:
receiving incremental file list
anaconda-ks.cfg
sent 43 bytes received 1.10K bytes 325.43 bytes/sec
total size is 1.90K speedup is 1.67
7. Kopioi tiedosto paikalliselta palvelimelta etäpalvelimelle SSH:n avulla
Voit synkronoida tiedoston paikalliselta palvelimelta etäpalvelimeen SSH:n avulla käyttämällä seuraavaa komentoa kuvan mukaisesti.
rsync -avzhe ssh backup.tar.gz [email :/backups/
[email 's password:
sending incremental file list
created directory /backups
backup.tar.gz
sent 224.59K bytes received 66 bytes 64.19K bytes/sec
total size is 224.40K speedup is 1.00
8. Näytä edistyminen siirrettäessä tietoja Rsyncin avulla
Jos haluat näyttää edistymisen siirrettäessä tietoja yhdeltä koneelta toiselle, voimme käyttää '--progress'
-vaihtoehtoa, joka näyttää tiedostot ja jäljellä olevan ajan siirron suorittamiseen.
rsync -avzhe ssh --progress /root/rpmpkgs [email :/root/rpmpkgs
[email 's password:
sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
1.47M 100% 31.80MB/s 0:00:00 (xfr#1, to-chk=3/5)
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
138.01K 100% 2.69MB/s 0:00:00 (xfr#2, to-chk=2/5)
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
2.01M 100% 18.45MB/s 0:00:00 (xfr#3, to-chk=1/5)
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm
120.48K 100% 1.04MB/s 0:00:00 (xfr#4, to-chk=0/5)
sent 3.74M bytes received 96 bytes 1.50M bytes/sec
total size is 3.74M speedup is 1.00
9. Sisällytä tiedostot tietyllä tunnisteella Rsyncin avulla
Jos haluat sisällyttää tiettyjä tiedostoja tai malleja rsync-toiminnon aikana, voit käyttää --include
-vaihtoehtoa, jonka laajennus vastaa kaikkia tiedostoja.
rsync -avz --include='*.txt' /path/to/source/ user@remote:/path/to/destination/
Esitetyssä esimerkissä rsync sisällyttää siirron aikana vain tiedostot, joiden tunniste on .txt
hakemistosta /path/to/source/.
10. Sulje Rsyncin avulla pois tiedostot, joilla on tietty pääte
Vastaavasti voit sulkea pois tietyn laajennuksen rsync-toiminnon aikana käyttämällä --exclude
-vaihtoehtoa jokerimerkkikuvion kanssa.
rsync -avz --exclude='*.ext' /path/to/source/ user@remote:/path/to/destination/
Esitetyssä esimerkissä rsync sulkee pois tiedostot, joiden tunniste on (*.ext)
siirron aikana, mutta sisältää kaikki muut tiedostot ja hakemistot.
11. Sisällytä ja sulje pois tiedostot Rsyncin avulla
Jos haluat sisällyttää ja sulkea pois tiettyjä tiedostoja tai malleja rsync-toiminnon aikana, voit käyttää sekä --include
- että --exclude
-vaihtoehtoja sopivien jokerimerkkikuvioiden kanssa.
Näiden kahden vaihtoehdon avulla voimme sisällyttää ja poissulkea tiedostoja määrittämällä parametrit. Tämä vaihtoehto auttaa meitä määrittämään tiedostot tai hakemistot, jotka haluat sisällyttää synkronointiin ja sulkea pois tiedostoja ja kansioita. jonka kanssa et halua siirtyä.
Tässä esimerkissä rsync-komento sisältää vain ne tiedostot ja hakemistot, jotka alkavat kirjaimella 'R'
, ja sulkee pois kaikki muut tiedostot ja hakemistot.
rsync -avze ssh --include 'R*' --exclude '*' [email :/var/lib/rpm/ /root/rpm
12. -delete-vaihtoehdon käyttö Rsyncin kanssa
Jos tiedostoa tai hakemistoa ei ole lähteessä, mutta se on jo olemassa kohteessa, saatat haluta poistaa olemassa olevan tiedoston/hakemiston kohteessa synkronoinnin aikana.
Voimme käyttää --delete
-vaihtoehtoa tiedostojen poistamiseen, joita ei ole lähdehakemistossa.
Lähde ja kohde ovat synkronoituja. Luo nyt uusi tiedosto test.txt kohteeseen.
[root@tecmint:~]# cd /root/rpm/
[root@tecmint:~/rpm]# touch test.txt
[root@tecmint:~/rpm]# rsync -avz --delete [email :/var/lib/rpm/ /root/rpm/
[email 's password:
receiving incremental file list
deleting test.txt
./
.dbenv.lock
.rpm.lock
Basenames
Conflictname
Dirnames
Enhancename
Filetriggername
Group
Installtid
Name
Obsoletename
Packages
Providename
Sha1header
Sigmd5
Suggestname
Supplementname
Transfiletriggername
Triggername
__db.001
__db.002
__db.003
sent 445 bytes received 18,543,954 bytes 2,472,586.53 bytes/sec
total size is 71,151,616 speedup is 3.84
Targetissa on uusi tiedosto nimeltä test.txt, kun synkronointi lähteen kanssa –delete
-vaihtoehdolla poisti tiedoston test.txt. .
13. Aseta tiedostonsiirtoraja Rsyncin avulla
Voit määrittää siirrettävän tai synkronoitavan enintään-tiedoston koon. Voit tehdä sen "--max-size
" -vaihtoehdolla. Tässä esimerkissä tiedoston 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
./
.dbenv.lock
.rpm.lock
Conflictname
Enhancename
Filetriggername
Group
Installtid
Name
Obsoletename
Recommendname
Requirename
Sha1header
Sigmd5
Suggestname
Supplementname
Transfiletriggername
Triggername
__db.002
sent 129.52K bytes received 396 bytes 28.87K bytes/sec
total size is 71.15M speedup is 547.66
14. Poista lähdetiedostot automaattisesti siirron jälkeen
Oletetaan nyt, että sinulla on pääverkkopalvelin ja tietojen varmuuskopiopalvelin, loit päivittäisen varmuuskopion ja synkronoit sen varmuuskopiopalvelimesi kanssa, mutta nyt et halua säilyttää paikallista kopiota varmuuskopiosta verkkopalvelimessasi.
Joten odotatko siirron valmistumista ja poistatko sitten paikallisen varmuuskopiotiedoston manuaalisesti? Ei tietenkään. Tämä automaattinen poisto voidaan tehdä --remove-source-files
-vaihtoehdolla.
rsync --remove-source-files -zvh backup.tar.gz [email :/tmp/backups/
[email 's password:
backup.tar.gz
sent 795 bytes received 2.33K bytes 894.29 bytes/sec
total size is 267.30K speedup is 85.40
[root@tecmint:~]# ls -l backup.tar.gz
ls: cannot access 'backup.tar.gz': No such file or directory
15. Suorita Dry Run Rsyncillä
Jos olet aloittelija, joka käyttää rsync-komentoa, etkä tiedä tarkalleen mitä komentosi tekee. Rsync voi todella sotkea kohdekansiosi asiat, ja sen kumoaminen voi olla työlästä työtä.
Tämän valinnan käyttäminen ei tee muutoksia tiedostoihin ja näyttää komennon tulosteen. Jos tulos näyttää täsmälleen saman kuin haluat, voit poistaa '--dry-run
'-vaihtoehto komennostasi ja suorita terminaalissa.
rsync --dry-run --remove-source-files -zvh backup.tar.gz [email :/tmp/backups/
[email 's password:
backup.tar.gz
sent 50 bytes received 19 bytes 19.71 bytes/sec
total size is 267.30K speedup is 3,873.97 (DRY RUN)
16. Rsync Set Bandwidth Limit ja Transfer File
Voit asettaa kaistanleveysrajan siirtäessäsi tietoja koneelta toiselle vaihtoehdon --bwlimit
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 rsync synkronoi oletusarvoisesti vain muuttuneet lohkot ja tavut. Jos haluat nimenomaisesti synkronoida koko tiedoston, käytä 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
Johtopäätös
Tämä päättää yleiskatsauksen rsyncistä ja sen ominaisuuksista. Jos haluat tutkia tarkemmin sen laajoja vaihtoehtoja ja toimintoja, suosittelen tutustumaan saatavilla oleviin kattaviin käsikirjasivuihin (man pages).