16 praktinių „Rsync“ komandos pavyzdžių sistemoje „Linux“.
Rsync (Nuotolinis sinchronizavimas) yra dažniausiai naudojama komanda, skirta failams ir katalogams nukopijuoti ir sinchronizuoti nuotoliniu būdu bei lokaliai „Linux“/„Unix“ sistemose.
Naudodami komandą rsync galite nukopijuoti ir sinchronizuoti duomenis nuotoliniu būdu ir vietoje kataloguose, diskuose ir tinkluose, kurti atsargines duomenų kopijas ir dubliuoti du „Linux“ įrenginius.
Šiame straipsnyje paaiškinama 16 pagrindinių ir išplėstinių komandos rsync naudojimo būdų, kaip nuotoliniu būdu ir vietiniu būdu perkelti failus į Linux pagrįstus įrenginius. Nereikia būti root naudotoju, kad paleistumėte komandą rsync.
„Rsync Command“ pranašumai
Jis siūlo keletą privalumų, įskaitant:
- Efektyvus failų perkėlimas – rsync naudoja delta perdavimo algoritmą, o tai reiškia, kad perkelia tik skirtumus tarp šaltinio ir paskirties failų, o tai žymiai sumažina perduodamų duomenų kiekį, todėl yra efektyvu sinchronizuoti didelius failus ar katalogus.
- Nuotolinis failų sinchronizavimas – rsync palaiko tiek vietinį, tiek nuotolinį failų perkėlimą per SSH, kuris leidžia sinchronizuoti vietines ir nuotolines sistemas arba atspindėti katalogus keliuose įrenginiuose.
- Papildomos atsarginės kopijos – rsync puikiai tinka laipsniškoms atsarginėms kopijoms kurti, nes ji efektyviai kuria ir atnaujina atsargines kopijas perkeldama tik naujus arba pakeistus failus.
- Išsaugo failo leidimus – rsync gali išsaugoti įvairius failo atributus, tokius kaip leidimai, nuosavybės teisė, laiko žymos ir simbolinės nuorodos, o tai užtikrina, kad nukopijuoti failai paskirties vietoje išlaikys pradines savybes.
- Pralaidumo valdymas – rsync leidžia apriboti pralaidumo naudojimą failų perkėlimo metu, nes siųsdamas ir gaudamas duomenis iš abiejų galų naudoja glaudinimo ir išskleidimo metodus.
- Greičiau – rsync gali būti greitesnis nei scp (saugi kopijavimas) failams perkelti, ypač kai sinchronizuojami dideli katalogai arba kai dirbama su failais, kurie jau iš dalies perkelti arba yra paskirties vietoje.
Rsync komandos sintaksė
Komanda rsync atitinka šią sintaksę:
rsync [OPTIONS] SOURCE DESTINATION
Toliau pateikiamas skirtingų komponentų ir parinkčių, naudojamų su rsync komandomis, paaiškinimas:
-v
– išsami išvestis, rodanti išsamią informaciją apie perdavimą.-r
– rekursyviai kopijuoja duomenis (tačiau neišsaugo laiko žymų ir leidimo perduodant duomenis.-a
– archyvavimo režimas, leidžiantis kopijuoti failus rekursyviai, taip pat išsaugomos simbolinės nuorodos, failų leidimai, naudotojų ir grupių nuosavybės teisės bei laiko žymos.-z
– suglaudinkite failus perkėlimo metu, kad sumažintumėte tinklo naudojimą.-h
– žmogaus skaitomi, išvesti skaičiai žmogui suprantamu formatu.-P
– rodyti pažangą perdavimo metu.ŠALTINIS
– nurodomas (-i) šaltinio failas (-ai) arba katalogas, kurį reikia perkelti, kuris gali būti vietinė arba nuotolinė vieta.DESTINATION
– nurodo paskirties kelią, į kurį bus nukopijuoti failai arba katalogai. Panašiai kaip šaltinis, tai gali būti vietinis kelias arba nutolusi vieta.
Įdiekite Rsync Linux sistemoje
Mes galime įdiegti rsync paketą naudodami toliau pateiktą paketų tvarkyklę pagal jūsų Linux platinimą.
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. Nukopijuokite/sinchronizuokite failą vietoje
Norėdami kopijuoti arba sinchronizuoti failą vietoje, galite naudoti šią komandą, kuri sinchronizuos vieną failą vietiniame kompiuteryje iš vienos vietos į kitą.
Šiame pavyzdyje failo pavadinimą backup.tar reikia nukopijuoti arba sinchronizuoti su /tmp/backups/ aplanku.
[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
Aukščiau pateiktame pavyzdyje galite matyti, kad jei paskirties vieta dar nėra, rsync automatiškai sukurs paskirties vietos katalogą.
2. Vietinis katalogo kopijavimas/sinchronizavimas
Ši komanda perkels arba sinchronizuos visus failus iš vieno katalogo į kitą to paties įrenginio katalogą.
Šiame pavyzdyje /root/rpmpkgs yra keletas rpm paketų failų ir norite, kad tas katalogas būtų nukopijuotas į /tmp/backups/ aplanką.
[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. Nukopijuokite katalogą iš vietinio į nuotolinį serverį
Norėdami nukopijuoti katalogą iš vietinio serverio į nuotolinį serverį, galite naudoti šią komandą, kuri sinchronizuos katalogą iš vietinio į nuotolinį kompiuterį.
Pavyzdžiui, jei jūsų vietiniame kompiuteryje yra aplankas „rpmpkgs“, kuriame yra keli RPM paketai ir jei norite, kad to vietinio katalogo turinys būtų išsiųstas į nuotolinį serverį, galite naudoti šią komandą.
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. Nukopijuokite katalogą iš nuotolinio į vietinį serverį
Ši komanda padės sinchronizuoti nuotolinį katalogą su vietiniu katalogu. Šiame pavyzdyje katalogas /root/rpmpkgs, esantis nuotoliniame serveryje, kopijuojamas į vietinį kompiuterį, esantį /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 per SSH
Naudodami rsync galime naudoti SSH (Secure Shell) duomenims perduoti, naudodami SSH protokolą, kai perduodame duomenis, galite būti užtikrinti, kad jūsų duomenys perduodami saugiu ryšiu. su šifravimu, kad niekas negalėtų perskaityti jūsų duomenų, kol jie perduodami laidu internete.
Be to, kai naudojame rsync, turime pateikti naudotojo/root slaptažodį, kad atliktume tą konkrečią užduotį, todėl naudokite SSH, jūsų prisijungimai bus išsiųsti šifruotu būdu, kad jūsų slaptažodis būtų saugus.
Jei norite naudoti rsync per SSH, galite naudoti parinktį -e
, kad nurodytumėte nuotolinio apvalkalo komandą, kuri paprastai yra ssh, kaip parodyta.
rsync [OPTIONS] -e ssh /path/to/source user@remote:/path/to/destination
6. Nukopijuokite failą iš nuotolinio serverio į vietinį serverį su SSH
Norėdami sinchronizuoti failą iš nuotolinio serverio su vietiniu serveriu, galite nurodyti protokolą su rsync, naudodami parinktį -e su norimu naudoti protokolo pavadinimu.
Šiame pavyzdyje mes naudosime „ssh“ su parinktimi „-e“ ir vykdysime duomenų perdavimą.
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. Nukopijuokite failą iš vietinio serverio į nuotolinį serverį su SSH
Norėdami sinchronizuoti failą iš vietinio serverio su nuotoliniu serveriu naudodami SSH, galite naudoti šią komandą, kaip parodyta.
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. Rodyti pažangą perkeliant duomenis naudojant Rsync
Norėdami parodyti pažangą perkeliant duomenis iš vieno įrenginio į kitą, galime naudoti parinktį --progress'
, kuri rodo failus ir laiką, likusį perkėlimui užbaigti.
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. Įtraukite failus su tam tikru plėtiniu su Rsync
Norėdami įtraukti konkrečius failus ar šablonus rsync operacijos metu, galite naudoti parinktį --include
su plėtiniu, kuris atitinka visus failus.
rsync -avz --include='*.txt' /path/to/source/ user@remote:/path/to/destination/
Pateiktame pavyzdyje rsync perkėlimo metu įtrauks tik failus su plėtiniu .txt
iš katalogo /path/to/source/.
10. Išskirkite failus su konkrečiu plėtiniu naudodami Rsync
Panašiai, norėdami išskirti konkretų plėtinį rsync operacijos metu, galite naudoti parinktį --exclude
su pakaitos simboliu.
rsync -avz --exclude='*.ext' /path/to/source/ user@remote:/path/to/destination/
Pateiktame pavyzdyje rsync perkėlimo metu neįtrauks failų su nurodytu plėtiniu (*.ext)
, kartu įtraukdama visus kitus failus ir katalogus.
11. Įtraukti ir išskirti failus su Rsync
Norėdami įtraukti ir išskirti konkrečius failus ar šablonus rsync operacijos metu, galite naudoti ir parinktis --include
ir --exclude
su atitinkamais pakaitos simboliais.
Šios dvi parinktys leidžia mums įtraukti ir išskirti failus, nurodant parametrus. Ši parinktis padeda mums nurodyti tuos failus ar katalogus, kuriuos norite įtraukti į sinchronizavimą, ir išskirti failus bei aplankus. su kuriuo nenorite būti perkeltas.
Šiame pavyzdyje komanda rsync apims tik tuos failus ir katalogus, kurie prasideda raide R
ir neįtrauks visų kitų failų ir katalogų.
rsync -avze ssh --include 'R*' --exclude '*' [email :/var/lib/rpm/ /root/rpm
12. Parinkties –delete naudojimas su Rsync
Jei failo ar katalogo šaltinyje nėra, bet paskirties vietoje jis jau yra, sinchronizuodami galbūt norėsite ištrinti esamą failą/katalogą.
Galime naudoti parinktį '--delete
' norėdami ištrinti failus, kurių nėra šaltinio kataloge.
Šaltinis ir tikslas yra sinchronizuoti. Dabar sukurkite naują failą test.txt paskirties vietoje.
[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
Target turi naują failą pavadinimu test.txt, kai sinchronizuojama su šaltiniu naudojant parinktį –delete
, pašalinamas failas test.txt .
13. Nustatykite failų perdavimo limitą naudodami Rsync
Galite nurodyti Maksimalų failo dydį, kurį norite perkelti arba sinchronizuoti. Tai galite padaryti naudodami parinktį „--max-size
“. Šiame pavyzdyje maksimalus failo dydis yra 200 000, todėl ši komanda perduos tik tuos failus, kurie yra lygūs arba mažesni nei 200 000.
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. Automatiškai ištrinkite šaltinio failus po perdavimo
Tarkime, kad turite pagrindinį žiniatinklio serverį ir duomenų atsarginės kopijos serverį, sukūrėte kasdienę atsarginę kopiją ir sinchronizavote ją su atsarginės kopijos serveriu, bet dabar nenorite saugoti tos vietinės atsarginės kopijos savo žiniatinklio serveryje.
Taigi, ar palauksite, kol bus baigtas perkėlimas, ir tada rankiniu būdu ištrinsite tą vietinį atsarginės kopijos failą? Zinoma kad ne. Šį automatinį ištrynimą galima atlikti naudojant parinktį „--remove-source-files
“.
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. Atlikite Dry Run su Rsync
Jei esate naujokas naudojant rsync ir nežinote, ką tiksliai atliks jūsų komanda. „Rsync“ tikrai gali sujaukti dalykus paskirties aplanke, o anuliuoti gali būti varginantis darbas.
Naudodami šią parinktį failai neatliks jokių pakeitimų ir parodys komandos išvestį. Jei išvestis rodo lygiai tą patį, kaip norite, galite pašalinti '--dry-run
' parinktį iš savo komandos ir paleiskite terminale.
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 ir Transfer File
Perkeldami duomenis iš vieno įrenginio į kitą, galite nustatyti pralaidumo apribojimą naudodami parinktį --bwlimit
. Ši parinktis padeda apriboti I/O pralaidumą.
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
Be to, pagal numatytuosius nustatymus rsync sinchronizuoja tik pakeistus blokus ir baitus. Jei aiškiai norite sinchronizuoti visą failą, su juo naudokite parinktį -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
Išvada
Tai užbaigia mūsų rsync ir jo galimybių apžvalgą. Norėdami toliau tyrinėti plačias jo parinktis ir funkcijas, raginu žiūrėti turimus išsamius vadovo puslapius (man puslapius).