Linux Rsync 命令16 個(gè)實(shí)戰(zhàn)示例小結(jié)
Rsync(遠(yuǎn)程同步)是Linux/Unix系統(tǒng)中用于遠(yuǎn)程和本地復(fù)制及同步文件和目錄的常用工具。
利用rsync命令,您可以輕松地在不同目錄、硬盤和網(wǎng)絡(luò)之間進(jìn)行數(shù)據(jù)的遠(yuǎn)程和本地復(fù)制與同步,進(jìn)行數(shù)據(jù)備份,以及在兩臺(tái)Linux系統(tǒng)間創(chuàng)建鏡像。
這篇文章介紹了rsync命令的16個(gè)基本和進(jìn)階用法,幫助您在Linux系統(tǒng)上實(shí)現(xiàn)文件的遠(yuǎn)程和本地傳輸。執(zhí)行rsync命令不需要root權(quán)限。
Rsync命令的好處
rsync 命令具有多項(xiàng)優(yōu)點(diǎn),例如:
- 高效傳輸 - rsync 采用差異傳輸算法,僅傳輸源文件與目標(biāo)文件之間的不同部分,大幅減少數(shù)據(jù)傳輸量,特別適合同步大文件或文件夾。
- 遠(yuǎn)程同步 - rsync 支持通過SSH進(jìn)行本地和遠(yuǎn)程文件傳輸,便于在本地和遠(yuǎn)程系統(tǒng)間同步文件或在多臺(tái)設(shè)備間鏡像文件夾。
- 增量備份 - rsync 非常適合進(jìn)行增量備份,因?yàn)樗軌蚋咝У貏?chuàng)建和更新備份,只傳輸新增或修改過的文件。
- 保留權(quán)限 - rsync 能夠保持文件的多種屬性,包括權(quán)限、所有者、時(shí)間戳和符號(hào)鏈接,確保復(fù)制的文件在目標(biāo)位置保持原樣。
- 控制帶寬 - rsync 允許限制文件傳輸時(shí)的帶寬使用,它在數(shù)據(jù)傳輸過程中使用壓縮和解壓縮技術(shù)。
- 速度更快 - rsync 在傳輸文件時(shí)速度通常比scp(安全復(fù)制)更快,特別是在同步大型目錄或處理已經(jīng)部分傳輸或已存在于目標(biāo)位置的文件時(shí)。
Rsync命令的語法
rsync命令遵循如下語法:
# rsync [OPTIONS] SOURCE DESTINATION
以下是rsync命令中不同組成部分和選項(xiàng)的說明:
- -v – 輸出詳細(xì)信息,展示文件傳輸?shù)脑敿?xì)過程。
- -r – 遞歸復(fù)制數(shù)據(jù)(但此過程中不會(huì)保留文件的時(shí)間戳和權(quán)限)。
- -a – 歸檔模式,可以遞歸復(fù)制文件,并保留符號(hào)鏈接、文件權(quán)限、用戶和組的所有者信息以及時(shí)間戳。
- -z – 傳輸時(shí)壓縮文件,以減少網(wǎng)絡(luò)流量。
- -h – 易于理解的格式,以更易于理解的方式顯示數(shù)字。
- -P – 傳輸時(shí)顯示進(jìn)度條。
- SOURCE – 指定要傳輸?shù)脑次募蚰夸?,可以是本地或遠(yuǎn)程路徑。
- DESTINATION – 指定文件或目錄復(fù)制的目標(biāo)路徑,可以是本地或遠(yuǎn)程路徑。
在Linux系統(tǒng)中安裝Rsync
我們可以根據(jù)您的 Linux 發(fā)行版借助以下軟件包管理器安裝 rsync 軟件包。
$ 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. 本地文件復(fù)制/同步
若要在同一臺(tái)計(jì)算機(jī)內(nèi)復(fù)制或同步文件,您可以執(zhí)行如下命令,將單個(gè)文件從一個(gè)目錄移動(dòng)到另一個(gè)目錄。
例如,假設(shè)我們需要將名為 backup.tar 的文件復(fù)制或同步到本地的 /tmp/backups/ 目錄下。
[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
在上面的示例中,您可以看到,如果目標(biāo)尚不存在,rsync 將自動(dòng)為目標(biāo)創(chuàng)建一個(gè)目錄。

2. 本地復(fù)制/同步目錄
以下命令將把所有文件從一個(gè)目錄傳輸或同步到同一臺(tái)機(jī)器上的另一個(gè)目錄。
在此示例中,/root/rpmpkgs 包含一些 rpm 軟件包文件,并且您希望將該目錄復(fù)制到 /tmp/backups/ 文件夾中。
[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. 將目錄從本地復(fù)制到遠(yuǎn)程服務(wù)器
要將目錄從本地服務(wù)器復(fù)制到遠(yuǎn)程服務(wù)器,可以使用以下命令,該命令會(huì)將目錄從本地計(jì)算機(jī)同步到遠(yuǎn)程計(jì)算機(jī)。
例如,如果本地計(jì)算機(jī)中有一個(gè)文件夾“rpmpkgs”,其中包含一些 RPM 軟件包,并且您希望將該本地目錄的內(nèi)容發(fā)送到遠(yuǎn)程服務(wù)器,則可以使用以下命令。
# rsync -avzh /root/rpmpkgs root@192.168.0.141:/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. root@192.168.0.141'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. 將目錄從遠(yuǎn)程復(fù)制到本地服務(wù)器
此命令將幫助您將遠(yuǎn)程目錄同步到本地目錄。在此示例中,遠(yuǎn)程服務(wù)器上的目錄 /root/rpmpkgs 被復(fù)制到本地計(jì)算機(jī)的 /tmp/myrpms 中。
# rsync -avzh root@192.168.0.141:/root/rpmpkgs /tmp/myrpms root@192.168.0.141'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. 通過 SSH 進(jìn)行 Rsync
通過rsync,我們可以使用SSH(Secure Shell)進(jìn)行數(shù)據(jù)傳輸,在傳輸數(shù)據(jù)時(shí)使用SSH協(xié)議您可以確保您的數(shù)據(jù)在加密的安全連接中傳輸,這樣在傳輸過程中沒有人可以讀取您的數(shù)據(jù)通過互聯(lián)網(wǎng)上的電線。
此外,當(dāng)我們使用 rsync 時(shí),我們需要提供用戶/root 密碼來完成該特定任務(wù),因此使用 SSH 選項(xiàng)將以加密方式發(fā)送您的登錄信息,以便您的密碼安全。
要通過 SSH 使用 rsync,可以使用 -e 選項(xiàng)指定遠(yuǎn)程 shell 命令,通常是 ssh,如圖所示。
# rsync [OPTIONS] -e ssh /path/to/source user@remote:/path/to/destination
6. 使用 SSH 將文件從遠(yuǎn)程服務(wù)器復(fù)制到本地服務(wù)器
要將文件從遠(yuǎn)程服務(wù)器同步到本地服務(wù)器,您可以使用“-e”選項(xiàng)和您要使用的協(xié)議名稱來指定 rsync 協(xié)議。
在此示例中,我們將使用帶有“-e”選項(xiàng)的“ssh”并執(zhí)行數(shù)據(jù)傳輸。
# rsync -avzhe ssh root@192.168.0.141:/root/anaconda-ks.cfg /tmp root@192.168.0.141'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. 使用 SSH 將文件從本地服務(wù)器復(fù)制到遠(yuǎn)程服務(wù)器
要使用 SSH 將文件從本地服務(wù)器同步到遠(yuǎn)程服務(wù)器,您可以利用以下命令,如下所示。
# rsync -avzhe ssh backup.tar.gz root@192.168.0.141:/backups/ root@192.168.0.141'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. 使用 Rsync 傳輸數(shù)據(jù)時(shí)顯示進(jìn)度
要顯示將數(shù)據(jù)從一臺(tái)計(jì)算機(jī)傳輸?shù)搅硪慌_(tái)計(jì)算機(jī)時(shí)的進(jìn)度,我們可以使用“–progress”選項(xiàng),該選項(xiàng)顯示文件以及完成傳輸?shù)氖S鄷r(shí)間。
# rsync -avzhe ssh --progress /root/rpmpkgs root@192.168.0.141:/root/rpmpkgs
root@192.168.0.141'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
到此這篇關(guān)于Linux Rsync 命令16 個(gè)實(shí)戰(zhàn)示例小結(jié)的文章就介紹到這了,更多相關(guān)linux rsync命令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ubuntu修改terminal終端的主機(jī)名的實(shí)現(xiàn)方法
這篇文章主要介紹了ubuntu修改terminal終端的主機(jī)名的實(shí)現(xiàn)方法的相關(guān)資料,希望通過本文能幫助大家,需要的朋友可以參考下2017-08-08
linux shell 邏輯運(yùn)算符、邏輯表達(dá)式詳細(xì)介紹
shell的邏輯運(yùn)算符 涉及有以下幾種類型,因此只要適當(dāng)選擇,可以解決我們很多復(fù)雜的判斷,達(dá)到事半功倍效果2014-02-02
Putty實(shí)現(xiàn)自動(dòng)登陸遠(yuǎn)程Linux主機(jī)的方法
這篇文章主要介紹了Putty實(shí)現(xiàn)自動(dòng)登陸遠(yuǎn)程Linux主機(jī)的方法,本文講解的是使用公鑰和密鑰方式實(shí)現(xiàn)自動(dòng)登錄,需要的朋友可以參考下2015-04-04
Shell中使用scp命令實(shí)現(xiàn)文件上傳代碼
這篇文章主要介紹了Shell中使用scp命令實(shí)現(xiàn)文件上傳代碼,本文講解使用scp命令實(shí)現(xiàn)名登錄上傳文件,需要的朋友可以參考下2015-04-04

