歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

Rsync原理以及使用基礎教程

Rsync使用的Rsync演算法來使本地和遠程兩個主機之間的文件達到同步,這個算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當快。 核心算法 假定在名為和的兩台計算機之間同步相似的文件A與B,其中對文件A擁有訪問權,對文件B擁有訪問權

Rsync使用所謂的“Rsync演算法”來使本地和遠程兩個主機之間的文件達到同步,這個算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當快。

算法核心部分:

假定在名為α和β的兩台計算機之間同步相似的文件A與B,其中α對文件A擁有訪問權,β對文件B擁有訪問權。並且假定主機α與β之間的網絡帶寬很小。那麼rsync算法將通過下面的五個步驟來完成:

1.β將文件B分割成一組不重疊的固定大小為S字節的數據塊。最後一塊可能會比S 小。

2.β對每一個分割好的數據塊執行兩種校驗:一種是32位的滾動弱校驗,另一種是128位的MD4強校驗。

3.β將這些校驗結果發給α。

4.α通過搜索文件A的所有大小為S的數據塊(偏移量可以任選,不一定非要是S的倍數),來尋找與文件B的某一塊有著相同的弱校驗碼和強校驗碼的數據塊。這項工作可以借助滾動校驗的特性很快完成。

5.α發給β一串指令來生成文件A在β上的備份。這裡的每一條指令要麼是對文件B經擁有某一個數據塊而不須重傳的證明,要麼是一個數據塊,這個數據塊肯定是沒有與文件B的任何一個數據塊匹配上的。

Rsync的優點如下:

1.可以鏡像保存整個目錄樹和文件系統;

2.可以很容易做到保持原來文件的權限、時間、軟硬鏈接等;

3.無須特殊權限即可安裝;

4.優化的流程,文件傳輸效率高;

5.可以使用rcp、ssh等方式來傳輸文件,當然也可以通過直接的socket連接;

6.支持匿名傳輸。

 

 

 

基本語法
- 通過遠程 shell 方式:

- rsync [OPTION] [USER@]HOST:SRC DEST
- 使用遠程 shell(如 ssh, rsh)實現將遠程機器的內容拷貝到本地機器。 SRC 地址路徑中以單個冒號 “:” 進行分隔。
- rsync [OPTION] SRC [USER@]HOST:DEST
- 使用遠程 shell(如 rsh、ssh)實現本地機器的內容拷貝到遠程機器。 DEST 地址路徑中以單個冒號 “:” 進行分隔。
- 通過 rsync daemon 方式:

- rsync [OPTION] [USER@]HOST::SRC DEST 或
- rsync [OPTION] rsync://[USER@]HOST[:PORT]/SRC [DEST]
- 從遠程 rsync 服務器中拷貝文件到本地機。 SRC 地址路徑中以雙冒號 “::” 進行分隔。
- rsync [OPTION] SRC [USER@]HOST::DEST 或
- rsync [OPTION] SRC rsync://[USER@]HOST[:PORT]/DEST
- 從本地機器拷貝文件到遠程 rsync 服務器中。 DEST 地址路徑中以雙冒號 “::” 進行分隔。

如果 rsync 命令中只指定 SRC 參數而不指定 DEST 參數,則意為顯示源文件列表而非進行同步拷貝。 rsync 有許多功能選項,常用的選項如下:

 

 

rsync 常用參數

 

選項 描述
-a, –archive 歸檔模式,保持所有文件屬性,等同於 -rlptgoD
-v, –verbose 詳細信息輸出
-r, –recursive 對子目錄進行遞歸處理
-R, –relative 使用相對路徑信息
-b, –backup 創建備份
-z, –compress 對備份的文件在傳輸時進行壓縮處理
–delete 用於同步目錄,從 DEST 中將 SRC 不存在的文件進行刪除
–progress 顯示備份過程

 

 

rsync模式

rsync [OPTION]… SRC [SRC]… [USER@]HOST:DEST

rsync [OPTION]… [USER@]HOST:SRC DEST

rsync [OPTION]… SRC [SRC]… DEST

rsync [OPTION]… [USER@]HOST::SRC [DEST]

rsync [OPTION]… SRC [SRC]… [USER@]HOST::DEST

rsync [OPTION]… rsync://[USER@]HOST[:PORT]/SRC [DEST]

 

rsync有六種不同的工作模式:

拷貝本地文件;當SRC和DES路徑信息都不包含有單個冒號”:”分隔符時就啟動這種工作模式。

使用一個遠程shell程序(如rsh、ssh)來實現將本地機器的內容拷貝到遠程機器。當DST路徑地址包含單個冒號”:”分隔符時啟動該模式。

使用一個遠程shell程序(如rsh、ssh)來實現將遠程機器的內容拷貝到本地機器。當SRC地址路徑包含單個冒號”:”分隔符時啟動該模式。

從遠程rsync服務器中拷貝文件到本地機。當SRC路徑信息包含”::”分隔符時啟動該模式。

從本地機器拷貝文件到遠程rsync服務器中。當DST路徑信息包含”::”分隔符時啟動該模式。

列遠程機的文件列表。這類似於rsync傳輸,不過只要在命令中省略掉本地機信息即可。

 

 

 

使用實例:
- 查看服務端文件及列表 - # rsync 9.186.110.53::查看服務端可用的模塊列表以及注釋信息
- # rsync [email protected]::www/查看服務端 www 模塊中的目錄及文件列表(使用 rsyncd 用戶認證方式)
- # rsync [email protected]:/var/www/html/查看服務端 /var/www/html 目錄中的內容(使用服務端的系統用戶進行驗證,如 ibmuser)

- 保持客戶端與服務端的數據同步 - # rsync -avz [email protected]::www/ /backup1/使用後台服務方式將服務端 www 模塊下的內容備份到本地 /backup1 目錄中,備份時保留原有權限、屬性、屬主及符號連接等,並使用壓縮方式加快數據傳輸。
- # rsync – avz [email protected]:/var/www/html /backup2/使用 ssh 方式將遠程的 /var/www/html 目錄備份到本地 /backup2/ 目錄下
- # rsync -avz –delete [email protected]::www/ /backup3/將遠程 www 模塊備份到本地 /backup3/ 目錄中,同時進行同步目錄,刪除本地目錄中多余的文件。


當服務端的數據出現問題時,需要通過客戶端的數據對服務端進行恢復,只要客戶端有服務端的寫入權限,即可通過調換 rsync 命令的 SRC、DEST 參數進行恢復。

Copyright © Linux教程網 All Rights Reserved