1. 前言
本文主要講解linux系統(tǒng)中的Rsync如何利用SSH加密隧道同步文件。
在網(wǎng)絡(luò)系統(tǒng)之間傳輸或同步文件時(shí),Linux和Unix用戶可以使用很多工具。

Rsync如何利用SSH加密隧道同步文件
最流行的數(shù)據(jù)傳輸協(xié)議是SSH和FTP。雖然FTP非常流行,但我總是更喜歡使用SSH,因?yàn)樗峭交騻鬏斘募淖畎踩姆绞健?/p>
有一些專門(mén)的工具可以在SSH上傳輸文件,比如scp和sftp,但是沒(méi)有一個(gè)具有rsync提供的所有特性。rsync可以用于鏡像數(shù)據(jù)、增量備份、在系統(tǒng)之間同步和復(fù)制文件等等。
在本教程中,我們將解釋如何通過(guò)SSH使用rsync同步和復(fù)制文件。
2. Rsync加密同步文件前提條件

Rsync加密同步文件前提條件
- SSH可以訪問(wèn)遠(yuǎn)程計(jì)算機(jī)。
- 運(yùn)行rsync命令的用戶和遠(yuǎn)程SSH用戶必須具有讀取和寫(xiě)入文件的適當(dāng)權(quán)限。
rsync實(shí)用程序必須同時(shí)安裝在目標(biāo)服務(wù)器系統(tǒng)和源服務(wù)器系統(tǒng)上。即Rsync有服務(wù)端和客戶端。
如果沒(méi)有安裝,可以使用發(fā)行版的包管理器安裝:
Ubuntu和Debian系統(tǒng):
sudo apt install rsync
centos和Fedora系統(tǒng):
sudo yum install rsync
3. 利用SSH加密隧道同步文件或傳輸流量
使用rsync,您可以利用SSH加密隧道將文件和目錄從遠(yuǎn)程服務(wù)器傳輸?shù)竭h(yuǎn)程服務(wù)器。

利用SSH加密隧道同步文件或傳輸流量
使用rsync傳輸文件的一般語(yǔ)法如下:
Local to Remote: rsync [OPTION]... -e ssh [SRC]... [USER@]HOST:DEST Remote to Local: rsync [OPTION]... -e ssh [USER@]HOST:SRC... [DEST]
其中SRC是源目錄,DEST是目標(biāo)目錄,USER是遠(yuǎn)程SSH用戶名,HOST是遠(yuǎn)程SSH主機(jī)或IP地址。
最新版本的rsync被配置為使用SSH作為默認(rèn)遠(yuǎn)程shell,因此可以省略-eSSH選項(xiàng)。
例如,要將一個(gè)文件/opt/file.zip從本地系統(tǒng)傳輸?shù)絀P為10.1.1.1的遠(yuǎn)程系統(tǒng)的/var/www/目錄,您需要運(yùn)行:
rsync -a /opt/file.zip [email protected]:/var/www/
-a選項(xiàng)代表存檔模式,它將遞歸地同步目錄、傳輸特殊和塊設(shè)備、保存符號(hào)鏈接、修改時(shí)間、組、所有權(quán)和權(quán)限。
如果您還沒(méi)有為遠(yuǎn)程機(jī)器設(shè)置無(wú)密碼SSH登錄,系統(tǒng)將提示您輸入用戶密碼。
ssh免密碼登錄的教程可以參考這里:
ssh免密碼登錄
如果文件存在于遠(yuǎn)程服務(wù)器上,那么它將被覆蓋。如果您想將文件保存在另一個(gè)名稱下,請(qǐng)指定新名稱:
rsync -a /opt/file.zip [email protected]:/var/www/file2.zip
要將數(shù)據(jù)從遠(yuǎn)程傳輸?shù)奖镜貦C(jī)器,使用遠(yuǎn)程位置作為源,本地位置作為目標(biāo):
執(zhí)行以下命令:
rsync -a [email protected]:/var/www/file.zip /opt/
在SSH上使用rsync傳輸目錄與傳輸文件相同。
重要的是要知道,rsync對(duì)后面帶有斜杠/的源目錄提供了不同的處理。當(dāng)源目錄后面有一個(gè)斜杠時(shí),rsync將只將源目錄的里面的內(nèi)容復(fù)制到目標(biāo)目錄。當(dāng)省略后面的斜杠時(shí),源目錄將會(huì)被復(fù)制到目標(biāo)目錄中。
例如,要將本地/opt/website/images/目錄傳輸?shù)竭h(yuǎn)程機(jī)器上的/var/ww /images/目錄,您可以輸入:
rsync -a /home/zcwyou/images/ [email protected]:/var/www/images/
如果要同步本地和遠(yuǎn)程目錄,請(qǐng)使用--delete選項(xiàng)。使用此選項(xiàng)時(shí)要小心,因?yàn)槿绻繕?biāo)目錄中不存在源目錄中的文件,它將刪除這些文件。
rsync -a --delete /home/zcwyou/images/ [email protected]:/var/www/images/
如果遠(yuǎn)程主機(jī)上的SSH監(jiān)聽(tīng)的端口不是默認(rèn)的22,那么使用-e選項(xiàng)指定端口。例如,如果SSH正在監(jiān)聽(tīng)端口1234,您將使用:
rsync -a -e "ssh -p 1234" /home/zcwyou/images/ [email protected]:/var/www/images/
當(dāng)傳輸大量數(shù)據(jù)時(shí),建議在屏幕會(huì)話中運(yùn)行rsync命令,或者使用-P選項(xiàng),告訴rsync在傳輸過(guò)程中顯示一個(gè)進(jìn)度條,并保存部分傳輸?shù)奈募?
rsync -a -P /home/zcwyou/images/ [email protected]:/var/www/images/
4. 總結(jié)

總結(jié)如何在SSH加密隧道上的利用rsync工具來(lái)復(fù)制和同步文件和目錄
通過(guò)本文,我們已經(jīng)學(xué)習(xí)了如何在SSH加密隧道上的利用rsync工具來(lái)復(fù)制和同步文件和目錄。
如果你有任何問(wèn)題,請(qǐng)留下你的意見(jiàn)。
本文已同步至博客站,尊重原創(chuàng),轉(zhuǎn)載時(shí)請(qǐng)?jiān)谡闹懈綆б韵骆溄樱?br />https://www.linuxrumen.com/rmxx/1424.html