10 Praktikal nga mga Ehemplo sa Rsync Command sa Linux


Ang Rsync (Remote Sync) mao ang labing kasagarang gigamit nga sugo alang sa pagkopya ug pag-synchronize sa mga file ug mga direktoryo sa layo ingon man sa lokal sa mga sistema sa Linux/Unix.

Uban sa tabang sa rsync command, mahimo nimong kopyahon ug i-synchronize ang imong data sa layo ug lokal sa mga direktoryo, mga disk, ug mga network, paghimo sa mga pag-backup sa datos, ug pagsalamin tali sa duha ka makina sa Linux.

Kini nga artikulo nagpatin-aw sa 10 ka batakan ug abante nga paggamit sa rsync nga sugo sa pagbalhin sa imong mga file sa layo ug lokal sa Linux-based nga mga makina. Dili nimo kinahanglan nga mahimong usa ka root user aron ipadagan ang rsync command.

  • Kini episyente nga nagkopya ug nag-sync sa mga file ngadto o gikan sa layo nga sistema.
  • Nagsuporta sa pagkopya sa mga link, device, tag-iya, grupo, ug pagtugot.
  • Kini mas paspas kay sa scp (Secure Copy) tungod kay ang rsync naggamit ug remote-update nga protocol nga nagtugot sa pagbalhin lamang sa mga kalainan tali sa duha ka set sa mga file. Sa unang higayon, gikopya niini ang tibuok sulod sa file o direktoryo gikan sa tinubdan ngadto sa destinasyon apan gikan sa sunod higayon, gikopya lang niini ang giusab nga mga block ug byte ngadto sa destinasyon.
  • Gigamit sa Rsync ang gamay nga paggamit sa bandwidth tungod kay naggamit kini nga pamaagi sa compression ug decompression samtang nagpadala ug nagdawat data sa duha ka tumoy.

# rsync options source destination

  • -v : verbose
  • -r : pagkopya sa datos sa balikbalik nga paagi (apan ayaw pagpreserbar sa mga timestamp ug pagtugot samtang nagbalhin sa datos.
  • -a : archive mode, nga nagtugot sa pagkopya sa mga file sa balikbalik nga paagi ug kini usab nagpreserbar sa simbolikong mga link, mga permiso sa file, mga tag-iya sa user ug grupo, ug mga timestamp.
  • -z : compress file data.
  • -h : mabasa sa tawo, mga numero sa output sa pormat nga mabasa sa tawo.

[ Tingali ganahan ka usab: Giunsa ang Pag-sync sa mga File/Direktoryo Gamit ang Rsync nga adunay Non-standard nga SSH Port]

I-install ang Rsync sa Linux System

Mahimo namong i-install ang rsync package sa tabang sa mosunod nga command sa imong distribusyon sa Linux.

$ sudo apt-get install rsync   [On Debian/Ubuntu & Mint] 
$ pacman -S rsync              [On Arch Linux]
$ emerge sys-apps/rsync        [On Gentoo]
$ sudo yum install rsync       [On Fedora/CentOS/RHEL and Rocky Linux/AlmaLinux]
$ sudo zypper install rsync    [On openSUSE]

1. Kopyaha/I-sync ang mga File ug Direktoryo sa Lokal

Ang mosunod nga sugo mag-sync sa usa ka file sa usa ka lokal nga makina gikan sa usa ka lokasyon ngadto sa laing lokasyon. Dinhi niini nga pananglitan, usa ka file name backup.tar kinahanglan nga kopyahon o i-sync sa /tmp/backups/ folder.

 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

Sa pananglitan sa ibabaw, imong makita nga kung ang destinasyon wala pa naglungtad ang rsync maghimo usa ka direktoryo nga awtomatiko alang sa destinasyon.

Ang mosunod nga sugo mobalhin o mag-sync sa tanang mga file gikan sa usa ka direktoryo ngadto sa laing direktoryo sa samang makina. Dinhi niini nga pananglitan, /root/rpmpkgs adunay pipila ka rpm package files ug gusto nimo nga ang direktoryo makopya sulod sa /tmp/backups/ folder.

 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

2. Kopyaha/I-sync ang mga File ug Direktoryo ngadto o Gikan sa usa ka Server

Kini nga sugo mag-sync sa usa ka direktoryo gikan sa usa ka lokal nga makina ngadto sa usa ka hilit nga makina. Pananglitan, adunay usa ka folder sa imong lokal nga kompyuter \rpmpkgs nga adunay pipila ka mga pakete sa RPM ug gusto nimo nga ang sulud sa lokal nga direktoryo ipadala sa usa ka hilit nga server, mahimo nimong gamiton ang mosunud nga mando.

 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

Kini nga sugo makatabang kanimo sa pag-sync sa usa ka hilit nga direktoryo sa usa ka lokal nga direktoryo. Dinhi niini nga pananglitan, usa ka direktoryo /root/rpmpkgs nga naa sa usa ka hilit nga server ang gikopya sa imong lokal nga kompyuter sa /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

3. Rsync Sa SSH

Uban sa rsync, mahimo namong gamiton ang SSH (Secure Shell) alang sa pagbalhin sa datos, gamit ang SSH protocol samtang nagbalhin sa among data masiguro nimo nga ang imong data gibalhin sa usa ka secured nga koneksyon uban sa encryption aron walay makabasa sa imong data samtang kini gibalhin. pinaagi sa wire sa internet.

[ Tingali ganahan ka usab: Unsaon Pagsiguro ug Pagtig-a sa OpenSSH Server ]

Usab kung mogamit kami og rsync kinahanglan namon nga hatagan ang user/root nga password aron matuman ang partikular nga buluhaton, mao nga ang paggamit sa kapilian sa SSH ipadala ang imong mga login sa usa ka naka-encrypt nga paagi aron luwas ang imong password.

Aron matino ang usa ka protocol nga adunay rsync kinahanglan nimo nga hatagan ang kapilian nga \-e nga adunay ngalan sa protocol nga gusto nimong gamiton. Dinhi niini nga pananglitan, gamiton namon ang \ssh nga adunay kapilian nga \-e ug himuon pagbalhin sa datos.

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

[ Tingali ganahan ka usab: Giunsa Paggamit ang Rsync sa Pag-sync sa Bag-o o Gibag-o/Gibag-o nga mga File sa Linux ]

4. Ipakita ang Pag-uswag Samtang Nagbalhin sa Data gamit ang rsync

Aron ipakita ang pag-uswag samtang gibalhin ang datos gikan sa usa ka makina ngadto sa lain nga makina, mahimo natong gamiton ang kapilian nga '–pag-uswag'. Gipakita niini ang mga file ug ang nahabilin nga oras aron makompleto ang pagbalhin.

 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

5. Paggamit sa –include ug –exclude Options

Kining duha ka mga opsyon nagtugot kanamo sa paglakip ug dili pag-apil sa mga file pinaagi sa pagtino sa mga parametro niini nga opsyon makatabang kanamo sa pagtino niadtong mga file o mga direktoryo nga gusto nimong iapil sa imong pag-sync ug dili iapil ang mga file ug mga folder nga dili nimo gustong ibalhin.

Dinhi niini nga pananglitan, ang rsync command maglakip sa mga file ug direktoryo lamang nga nagsugod sa 'R' ug dili iapil ang tanan nga ubang mga file ug direktoryo.

 rsync -avze ssh --include 'R*' --exclude '*' [email :/var/lib/rpm/ /root/rpm

[email 's password: 
receiving incremental file list
created directory /root/rpm
./
Requirename

sent 61 bytes  received 273,074 bytes  60,696.67 bytes/sec
total size is 761,856  speedup is 2.79

6. Paggamit sa –delete Option

Kung ang usa ka file o direktoryo wala maglungtad sa gigikanan, apan naa na sa destinasyon, mahimo nimong papason ang naglungtad nga file/direktoryo sa target samtang nag-sync.

Mahimo namong gamiton ang '–delete' nga kapilian sa pagtangtang sa mga file nga wala didto sa source directory.

Ang tinubdan ug target naa sa sync. Karon paghimo og bag-ong file test.txt sa target.

 cd /root/rpm/
 touch test.txt
 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

Ang target adunay bag-ong file nga gitawag ug test.txt, kung mag-synchronize sa tinubdan gamit ang '–delete' nga kapilian, gitangtang niini ang file test.txt.

7. Itakda ang Max Size sa mga File nga Ibalhin

Mahimo nimong itakda ang Max nga gidak-on sa file nga ibalhin o i-sync. Mahimo nimo kini gamit ang opsyon nga \–max-size.” Dinhi niini nga pananglitan, ang Max nga gidak-on sa file kay 200k, mao nga kini nga sugo mobalhin lamang niadtong mga file nga katumbas o mas gamay sa 200k.

 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

8. Awtomatikong Pagtangtang sa gigikanan nga mga File Human sa Malampuson nga Pagbalhin

Karon, pananglit ikaw adunay panguna nga web server ug usa ka data backup server, naghimo ka usa ka adlaw-adlaw nga backup ug gi-sync kini sa imong backup server, karon dili nimo gusto nga itago ang lokal nga kopya sa backup sa imong web server.

Busa, maghulat ka ba nga makompleto ang pagbalhin ug dayon tangtangon ang lokal nga backup file nga mano-mano? Siyempre NO. Kini nga awtomatik nga pagtangtang mahimo gamit ang kapilian nga '–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

 ls -l backup.tar.gz

ls: cannot access 'backup.tar.gz': No such file or directory

9. Paghimo ug Dry Run gamit ang rsync

Kung ikaw usa ka bag-o nga naggamit sa rsync ug wala mahibal-an kung unsa gyud ang buhaton sa imong mando. Mahimong gub-on ni Rsync ang mga butang sa imong destinasyon nga folder ug unya ang pag-undo mahimo’g usa ka makapakapoy nga trabaho.

[ Tingali ganahan ka usab: Unsaon Pag-sync ang Duha ka Apache Web Servers/Websites Gamit ang Rsync ]

Ang paggamit niini nga opsyon dili makahimo sa bisan unsa nga mga pagbag-o sa mga file ug nagpakita sa output sa command, kung ang output nagpakita sa eksaktong parehas nga gusto nimo nga buhaton nan mahimo nimong tangtangon ang '–dry-run' nga opsyon gikan sa imong command ug modagan sa terminal.

 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)

10. Rsync Set Bandwidth Limit ug Pagbalhin File

Mahimo nimong itakda ang limitasyon sa bandwidth samtang nagbalhin sa datos gikan sa usa ka makina ngadto sa lain nga makina sa tabang sa kapilian nga '–bwlimit'. Kini nga opsyon makatabang kanamo sa paglimite sa I/O bandwidth.

 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

Usab, pinaagi sa default rsync syncs giusab nga mga bloke ug bytes lamang, kung gusto nimo nga klaro nga gusto nga i-sync ang tibuok file unya imong gamiton ang '-W' nga kapilian niini.

 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

Kana ang tanan sa rsync karon, mahimo nimong makita ang mga panid sa tawo alang sa daghang mga kapilian. Magpabilin nga konektado sa Tecmint alang sa mas kulbahinam ug makapaikag nga mga panudlo sa umaabot. Ibilin ang imong mga komento ug sugyot.