本页使用了标题或全文手工转换

rsync

维基百科,自由的百科全书
跳转至: 导航搜索
rsync
Newrsynclogo.png
原作者 安德魯·垂鳩(Andrew Tridgell)與保羅·麥可拉斯(Paul Mackerras)
開發者 韋恩·大衛森(Wayne Davison)
穩定版本 3.1.1 / 2014年6月22日(5個月前) (2014-06-22)
类型 資料傳送/ 差分備份
许可协议 GNU通用公共许可证
網站 http://rsync.samba.org/

rsyncUnix下的一款应用软件,它能同步更新两处计算机的檔案目錄,並適當利用差分編碼以減少数据傳輸。rsync中一項與其他大部分類似程式或協定中所未見的重要特性是镜像對每個目標只需要一次傳送。rsync可拷貝/顯示目錄內容,以及拷貝檔案,並可選擇性的壓縮以及遞歸拷貝。

在常駐模式(daemon mode)下,rsync預設監聽TCP873,以原生rsync傳輸協定或者透過遠端shellRSH或者SSH伺服檔案。SSH情況下,rsync用戶端執行程式必須同時在本地和遠端機器上安裝。

rsync是自由软件,以GNU通用公共许可证發行。

演算法[编辑]

rsync公用程式利用由澳洲電腦程式師安德魯·垂鳩(Andrew Tridgell)發明的演算法,在當接受端電腦已經有相同結構(例如檔案)但不同版本時,有效的將結構傳輸過通訊連線。

接受端將檔案拷貝打散成固定大小為S的不重疊片段,並對每個片段計算兩個校验和MD4散列函數與一個較弱的輪替校验和(rolling checksum)。它將這些校验和送給發送者。通訊協議版本30(與rsync版本3.0.0一並發行)現在使用MD5散列函數以替代MD4。[1]

發送者對位於其版本的檔案中每個大小為S的片段計算輪替校验和,即使是重疊的片段。這可被有效的計算透過特別知識產權的輪替校验和算法:如果位元nn+S-1的輪替校验和是R,從位元n+1n+S的輪替校验和可從R,位元n,以及位元n+S計算出而不需要真正去檢驗中間的位元。因此,如果位元1到25的輪替校验和已被算出,那計算位元2到26的輪替校验和可完全依靠之前的校验和與位元1與位元26算出。

rsync使用的輪替校验和是根據馬克艾德勒(Mark Adler)的alder-32校验和算法。該算法也被用於zlib,而它本身也基於弗萊徹校验和(Fletcher's checksum)算法。

發送者其後以接收者送來的一組輪替校验和比較它自己的輪替校验和以決定是否任何匹配存在。如果是的話,它便透過計算匹配區塊的MD4校验和與接受端送來的MD4校验和比較來驗證匹配。

發送者稍後傳送給接收者不與接收者方任何區塊匹配的檔案的那些部分,以及如何合併這些區塊到接收者版本的組裝指令。在實際上,這產生了與發送者端檔案一模一樣的拷貝。然而,在原則上是可能接收者的拷貝在這一點上不同:這可能發生在當兩個檔案有不同的區塊但有著相同的MD4散列函數與輪替校验和;這種事情發生的機率在現實上極端罕見。

如果發送者與接收者檔案版本有許多區段相同,該公用程式只需傳送相對小部分的資料以將檔案同步。

在rsync演算法構成rsync應用程式核心並最佳化兩台電腦間TCP/IP的傳輸同時,rsync應用程式也支援其他種顯著增進檔案傳輸或備份的重要功能。他們包括在發送端與接收端個別利用zlib進行區塊區塊間壓縮解壓縮,以及支援通訊協定如ssh。該協定讓加密傳輸兼具壓縮與效率,透過rsync演算法產生的差分資料變得可能。除ssh以外,stunnel亦可被利用於創造加密通道以保全被傳輸的資料。

使用[编辑]

rsync是撰寫來取代rcpscp[2]。rsync最早期程式的其中之一是用來實現透過rsync/ssh與標準Unix帳號,從多重Unix客戶端鏡像或者備份到中央Unix伺服器。與如cron類似的排程應用程式配合,任何人皆可排程介於多台電腦與中央伺服器間自動加密過、基於rsync的鏡像備份。

變種[编辑]

一個叫做rdiff的公用程式利用rsync的演算法產生檔案A與檔案B間不同的差分檔案(與公用程式diff類似,不過不同的差分檔案格式)。差分檔案可稍後被套用到檔案A,轉成檔案B(類似patch公用程式)。

不像diff,產生差分檔案的過程有兩步:首先產生檔案A的簽名檔,然後這個(相對較小)的簽名檔與檔案B被用來產生差分檔。又與diff相異的是,rdiff可適用於二進位檔案

利用rdiff,自由軟體作者們寫了一個叫做rdiff-backup的公用程式,它可以跨過網路維護位於另一台伺服器某個檔案或者目錄的備份鏡像。rdiff-backup儲存備份以及遞增的rdiff差分檔。這種方式讓回溯到任何備份點成為可能。

duplicity是rdiff-backup的一個變種,它利用單一儲存服務(像Amazon S3)達成不需要與儲存伺服器合作的備份。它透過產生預先產生每個區塊的散列函數,將它們加密,並送到伺服器儲存,然後當進行遞增備份時取回。剩下的資料為滿足保全需求也被加密儲存。

歷史[编辑]

rsync首度發布於1996年6月19日。原始作者為安德魯·垂鳩(Andrew Tridgell)與保羅·麥可拉斯(Paul Mackerras)。[3]

rsync 3.0於2008年3月1日發行。[4]

參見[编辑]

參考資料[编辑]

外部連結[编辑]