溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

rsync使用的示例分析

發(fā)布時(shí)間:2022-01-24 11:53:44 來(lái)源:億速云 閱讀:106 作者:柒染 欄目:開(kāi)發(fā)技術(shù)

這篇文章給大家介紹rsync使用的示例分析,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

要想同步某一位置文件和目錄到另一個(gè)位置去可以使用Rsync,備份的位置可以在本地服務(wù)器或遠(yuǎn)程服務(wù)器。

rsync特征

速度:第一次的rsync同步源的整個(gè)內(nèi)容目錄到目標(biāo)位置。之后,rsync只傳遞改變的塊或字節(jié)到目標(biāo)位置,使傳輸非常快。
安全:rsync在傳輸中允許使用ssh協(xié)議加密數(shù)據(jù)。
更少的帶寬:rsync分別在發(fā)送和接收端對(duì)數(shù)據(jù)進(jìn)行壓縮和解壓縮。所以在使用rsync傳輸數(shù)據(jù)時(shí)使用的帶寬總是比使用其他文件傳輸協(xié)議來(lái)的少。
特權(quán):不需要特殊權(quán)限來(lái)安裝和執(zhí)行rsync

rsync語(yǔ)法

$ rsync options source destination

source和destination可以是本地或遠(yuǎn)程。在遠(yuǎn)程的情況下,需要指定登錄名、遠(yuǎn)程服務(wù)器的名稱和位置。

rsync使用示例

1. 在本地服務(wù)器上同步兩個(gè)目錄

用rsync – zvr在本地服務(wù)器上同步兩個(gè)目錄

$ rsync -zvr /var/opt/installation/inventory/ /root/temp
building file list ... done
sva.xml
svB.xml
.
sent 26385 bytes  received 1098 bytes  54966.00 bytes/sec
total size is 44867  speedup is 1.63

在上面rsync例子中:
• –z:允許壓縮
• –v:冗長(zhǎng)
• –r:遞歸
注:Rsync不會(huì)同步源文件或目錄的時(shí)間戳

$ ls -l /var/opt/installation/inventory/sva.xml /root/temp/sva.xml
-r--r--r-- 1 bin  bin  949 Jun 18  2009 /var/opt/installation/inventory/sva.xml
-r--r--r-- 1 root bin  949 Sep  2  2009 /root/temp/sva.xml

2. 用rsync –a同步時(shí)間戳

rsync的-a選項(xiàng)是archive的意思,加了之后有以下作用:
• 遞歸模式
• 同步軟鏈接
• 同步權(quán)限
• 同步時(shí)間戳
• 同步屬主和屬組
現(xiàn)在,我們執(zhí)行與例1一樣的命令,不同的是使用-a選項(xiàng)。

$ rsync -azv /var/opt/installation/inventory/ /root/temp/
building file list ... done
./
sva.xml
svB.xml
.
sent 26499 bytes  received 1104 bytes  55206.00 bytes/sec
total size is 44867  speedup is 1.63

我們可以看到,rsync將源目錄下文件的時(shí)間戳也同步過(guò)來(lái)了。

$ ls -l /var/opt/installation/inventory/sva.xml /root/temp/sva.xml
-r--r--r-- 1 root  bin  949 Jun 18  2009 /var/opt/installation/inventory/sva.xml
-r--r--r-- 1 root  bin  949 Jun 18  2009 /root/temp/sva.xml

3. 只同步一個(gè)文件

指定文件名稱,只同步一個(gè)文件

$ rsync -v /var/lib/rpm/Pubkeys /root/temp/
Pubkeys

sent 42 bytes  received 12380 bytes  3549.14 bytes/sec
total size is 12288  speedup is 0.99

4. 將本地文件同步到遠(yuǎn)程服務(wù)器

當(dāng)同步到遠(yuǎn)程服務(wù)器時(shí),我們需要指定用戶名、遠(yuǎn)程服務(wù)器的IP地址和目標(biāo)路徑。格式為:username@remote_server_ip:path

$ rsync -avz /root/temp/ linuxprobe@192.168.200.10:/home/linuxprobe/temp/
Password:
building file list ... done
./
rpm/
rpm/Basenames
rpm/Conflictname

sent 15810261 bytes  received 412 bytes  2432411.23 bytes/sec
total size is 45305958  speedup is 2.87

5. 將遠(yuǎn)程文件同步到本地服務(wù)器

$ rsync -avz linuxprobe@192.168.200.10:/var/lib/rpm /root/temp
Password:
receiving file list ... done
rpm/
rpm/Basenames
.
sent 406 bytes  received 15810230 bytes  2432405.54 bytes/sec
total size is 45305958  speedup is 2.87

6. 指定使用某一shell同步

遠(yuǎn)程同步時(shí),Rsync可以指定使用某一shell進(jìn)行安全傳輸。如:使用rsync –e ssh選擇ssh進(jìn)行安全連接。

$ rsync -avz -e ssh linuxprobe@192.168.200.10:/var/lib/rpm /root/temp
Password:
receiving file list ... done
rpm/
rpm/Basenames

sent 406 bytes  received 15810230 bytes  2432405.54 bytes/sec
total size is 45305958  speedup is 2.87

7. 不覆蓋目標(biāo)位置已改變的文件

如果目標(biāo)位置的文件已被修改,而我們不希望舊文件覆蓋它時(shí),可以使用-u選項(xiàng)。下面例子中,目標(biāo)位置的文件Basenames已經(jīng)被修改,使用-u 選項(xiàng)是它不被舊文件覆蓋。

$ ls -l /root/temp/Basenames
total 39088
-rwxr-xr-x 1 root root        4096 Sep  2 11:35 Basenames

$ rsync -avzu linuxprobe@192.168.200.10:/var/lib/rpm /root/temp
Password:
receiving file list ... done
rpm/

sent 122 bytes  received 505 bytes  114.00 bytes/sec
total size is 45305958  speedup is 72258.31

$ ls -lrt
total 39088
-rwxr-xr-x 1 root root        4096 Sep  2 11:35 Basenames

8. 只同步目錄樹(shù)結(jié)構(gòu)(不包括文件)

使用rsync – d選項(xiàng)只將目錄樹(shù)從源位置同步至目標(biāo)位置。下面的示例中,以遞歸方式只同步目錄樹(shù)而不同步目錄中的文件。

$ rsync -v -d linuxprobe@192.168.200.10:/var/lib/ .
Password:
receiving file list ... done
logrotate.status
CAM/
YaST2/
acpi/

sent 240 bytes  received 1830 bytes  318.46 bytes/sec
total size is 956  speedup is 0.46

9. 查看rsync進(jìn)度

使用rsync –progress選項(xiàng)可以查看rsync進(jìn)度,如多少文件已經(jīng)被拷貝,完成率是多少等

$ rsync -avz --progress linuxprobe@192.168.200.10:/var/lib/rpm/ /root/temp/
Password:
receiving file list ...
19 files to consider
./
Basenames
     5357568 100%   14.98MB/s    0:00:00 (xfer#1, to-check=17/19)
Conflictname
       12288 100%   35.09kB/s    0:00:00 (xfer#2, to-check=16/19)
.
.
.
sent 406 bytes  received 15810211 bytes  2108082.27 bytes/sec
total size is 45305958  speedup is 2.87

10. 刪除目標(biāo)位置創(chuàng)建的文件

若我們希望rsync時(shí)刪除在源位置不存在而在目標(biāo)位置存在的文件,可以使用-delete選項(xiàng)。
此例中,我們?cè)谀繕?biāo)位置創(chuàng)建了一個(gè)新文件名為new-file.txt.,在同步過(guò)程中,-delete選項(xiàng)刪除了new-file.txt文件

# Source and target are in sync. Now creating new file at the target.
$ > new-file.txt

$ rsync -avz --delete linuxprobe@192.168.200.10:/var/lib/rpm/ .
Password:
receiving file list ... done
deleting new-file.txt
./

sent 26 bytes  received 390 bytes  48.94 bytes/sec
total size is 45305958  speedup is 108908.55

11. 在目標(biāo)位置不創(chuàng)建新文件

使用-existing選項(xiàng)使得在同步時(shí)只同步目標(biāo)位置存在的文件,而不創(chuàng)建新文件。

#在源位置創(chuàng)建新文件new-file.txt
[/var/lib/rpm ]$ > new-file.txt
#同步目錄
$ rsync -avz --existing root@192.168.1.2:/var/lib/rpm/ .
root@192.168.1.2's password:
receiving file list ... done
./

sent 26 bytes  received 419 bytes  46.84 bytes/sec
total size is 88551424  speedup is 198991.96

12.查看源和目標(biāo)的不同文件或目錄

源位置:

$ ls -l /var/lib/rpm
-rw-r--r-- 1 root root  5357568 2010-06-24 08:57 Basenames
-rw-r--r-- 1 root root    12288 2008-05-28 22:03 Conflictname
-rw-r--r-- 1 root root  1179648 2010-06-24 08:57 Dirnames

目標(biāo)位置:

$ ls -l /root/temp
-rw-r--r-- 1 root root    12288 May 28  2008 Conflictname
-rw-r--r-- 1 bin  bin   1179648 Jun 24 05:27 Dirnames
-rw-r--r-- 1 root root        0 Sep  3 06:39 Basenames

源和目標(biāo)之間有兩個(gè)不同之處:1. 文件Dirnames屬主和屬組不同 2. 文件Basenames的大小不同
使用-i選項(xiàng)來(lái)顯示不同之處,如下所示

$ rsync -avzi linuxprobe@192.168.200.10:/var/lib/rpm/ /root/temp/
Password:
receiving file list ... done
>f.st.... Basenames
.f....og. Dirnames

sent 48 bytes  received 2182544 bytes  291012.27 bytes/sec
total size is 45305958  speedup is 20.76
In the output it displays some 9 letters in front of the file name or directory name indicating the changes.

可以看到,在文件名或目錄名前有9個(gè)字符來(lái)代表不同之處。此例中,Basenames和Dirnames前的字符代表含義如下:

> 代表文件已被傳輸?shù)奖镜刂鳈C(jī)。
f:代表這是個(gè)文件
s:代表文件大小發(fā)生變化
t:代表時(shí)間戳發(fā)生變化
o:屬主發(fā)生變化
g:屬組發(fā)生變化

13. 在傳輸時(shí)指定包括或排除某些文件
只傳輸’P’開(kāi)頭的文件或目錄(使用rsync include),不傳輸其他任何文件(使用rsync exclude)

$ rsync -avz --include 'P*' --exclude '*' linuxprobe@192.168.200.10:/var/lib/rpm/ /root/temp/
Password:
receiving file list ... done
./
Packages
Providename
Provideversion
Pubkeys

sent 129 bytes  received 10286798 bytes  2285983.78 bytes/sec
total size is 32768000  speedup is 3.19

14. 不傳輸大文件

使用rsync –max-size選項(xiàng)后,rsync將不傳輸大于指定大小的文件

$ rsync -avz --max-size='100K' linuxprobe@192.168.200.10:/var/lib/rpm/ /root/temp/
Password:
receiving file list ... done
./
Conflictname
Group
Installtid
Name
Sha1header
Sigmd5
Triggername

sent 252 bytes  received 123081 bytes  18974.31 bytes/sec
total size is 45305958  speedup is 367.35

15. 傳輸整個(gè)文件

rsync的主要特征之一是它只傳輸改變的塊到目標(biāo)位置,而不是傳輸整個(gè)文件。如果網(wǎng)絡(luò)帶寬對(duì)你不是問(wèn)題(CPU有),您可以使用-w選項(xiàng)來(lái)傳輸整個(gè)文件。它會(huì)加速rsync過(guò)程,因?yàn)樗挥迷谠春湍繕?biāo)位置執(zhí)行校驗(yàn)和。

#  rsync -avzW  linuxprobe@192.168.200.10:/var/lib/rpm/ /root/temp
Password:
receiving file list ... done
./
Basenames
Conflictname
Dirnames
Filemd5s
Group
Installtid
Name

sent 406 bytes  received 15810211 bytes  2874657.64 bytes/sec
total size is 45305958  speedup is 2.87

關(guān)于rsync使用的示例分析就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI