1. 程式人生 > >【rsync】工作模式及語法

【rsync】工作模式及語法


    關於rsync的啟動:
    前面說過rsync在進行同步或備份時,有兩種途經連線遠端主機:使用遠端shell,或使用TCP連線遠端daemon,可以把它們分別稱之為shell模式和daemon模式。只有daemon模式才有啟動rsync一說。
    如果使用shell模式,rsync安裝完成後就可以直接使用了,無所謂啟動,也不需要任何配置檔案。遠端傳輸時一般使用ssh作為傳輸工具,當然,也可以使用引數-e來指定一個遠端shell。
    如果使用daemon模式,就無需遠端shell了,但必須在一臺機器上啟動rsync daemon,預設埠873.

    你可以經由inetd啟動daemon,或者作為一個獨立程序啟動daemon,或者由rsync client通過遠端shell啟動daemon。
     1)如果把它作為一個獨立程序來啟動,只需要執行命令:rsync --daemon即可;
     2)如果通過inetd來執行,要修改兩個檔案:/etc/services和/etc/inetd.conf:
      在/etc/services檔案中新增如下行:rsync 873/tcp
      在/etc/inetd.conf中新增:rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon
  注意把/usr/bin/rsync換成你的rsync安裝目錄!然後重啟inetd服務,使配置檔案生效。

    關於由client通過遠端shell啟動daemon,官方文件中有一個條目:USING RSYNC-DAEMON FEATURES VIA A REMOTE-SHELL CONNECTION。
    條目中說,rsync支援這種用法:使用遠端shell連線host,然後衍生出一個single-use “daemon”伺服器,來讀取遠端使用者家目錄下的配置檔案。從使用者的角度看,通過遠端shell連線而啟用的daemon傳輸,它的命令列語法跟正常的rsync daemon傳輸是一樣的,唯一不同的是,你必須在命令中使用--rsh=COMMAND來明確遠端shell程式。如下例:
    rsync -av --rsh=ssh host::module /dest
  譯者注:雖然官方文件中說這種用法在某些情況下很有用,但我覺得很彆扭。

    當rsync作為daemon執行時,它需要一個使用者身份。如果你希望啟用chroot,則必須以root的身份來執行daemon,監聽埠(1024以下,預設873),或設定檔案屬主;如果不啟用chroot,也可以不使用root使用者來執行daemon,但該使用者必須對相應的模組擁有讀寫資料、日誌和lock file的許可權。
    當rsync以daemon模式執行時,它還需要一個配置檔案:rsyncd.conf。修改這個配置後不必重啟rsync daemon,因為每一次的client連線都會去重新讀取該檔案。
    譯者注:關於配置檔案rsyncd.conf的設定,後面會有詳細的引數解釋。

    關於rsync的兩種模式:

    該部分額外的內容來自IBM官方網站上的一篇文章。該文章把rsync的執行模式擴充套件成了四種,但我認為rsync官方文件的兩種模式的劃分更加合理一些。
    所謂rsync daemon,就是在一臺機器上永久執行的rsync程序。在任何一臺安裝rsync的機器上執行rsync --daemon,則這臺機器上執行的rsync就是rsync daemon。我們可以把檔案傳送給daemon,也可以向daemon請求檔案。
    daemon模式非常適合建立中心備份伺服器,或專案儲存庫。
    兩種模式的區別前面已經說過,shell模式在源路徑和目的路徑中使用一個冒號,而daemon模式使用兩個冒號。

    關於rsync命令的語法: