歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

對遠程數據同步工具Rsync的一些了解

  1.1 軟件簡介

  Rsync是一個遠程數據同步工具,可通過LAN/WAN快速同步多台主機間的文件。Rsync本來是用以取代rcp的一個工具,它當前由 rsync.samba.org維護。Rsync使用所謂的“Rsync演算法”來使本地和遠程兩個主機之間的文件達到同步,這個算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當快。運行Rsync server的機器也叫backup server,一個Rsync server可同時備份多個client的數據;也可以多個Rsync server備份一個client的數據。

  Rsync可以搭配rsh或ssh甚至使用daemon模式。Rsync server會打開一個873的服務通道(port),等待對方Rsync連接。連接時,Rsync server會檢查口令是否相符,若通過口令查核,則可以開始進行文件傳輸。第一次連通完成時,會把整份文件傳輸一次,下一次就只傳送二個文件之間不同的部份。

  Rsync支持大多數的類Unix系統,無論是Linux、Solaris還是BSD上都經過了良好的測試。此外,它在windows平台下也有相應的版本,比較知名的有cwRsync和Sync2NAS。

  Rsync的基本特點如下:

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

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

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

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

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

  6.支持匿名傳輸。

  1.2 核心算法

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

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

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

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

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

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

  1.3 命令語法

  rsync的命令格式可以為以下六種:

  rsync [OPTION]... SRC DEST

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

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

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

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

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

  對應於以上六種命令格式,rsync有六種不同的工作模式:

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

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

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

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

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

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




Copyright © Linux教程網 All Rights Reserved