27.6. rsync 簡介

當有大量的資料需要定期傳輸,但是並無太多變更時,rsync 就非常有用。例如,當建立備份時就非常適用。另一個應用程式則將焦點放在建置伺服器。這些伺服器儲存了網頁伺服器的完整目錄樹狀結構,會定期鏡像處理至 DMZ 中的網頁伺服器。

27.6.1. 組態與作業

rsync 可以使用兩個模式來操作。它是用來歸檔或複製資料。若要完成此動作,在目標系統上只需要像是 ssh 的遠端外圍程序。然而,rsync 也可以像 daemon 一樣,用來為網路提供目錄。

rsync 的基本作業模式並不需要任何特殊的組態。rsync 直接允許將完整的目錄鏡像處理至另一個系統。例如,下列指令可在名為 Sun 的備份伺服器上建立 Tux 主目錄的備份:

 rsync -baz -e ssh /home/tux/ tux@sun:backup
 

下列指令可用來還原目錄:

 rsync -az -e ssh tux@sun:backup /home/tux/
 

到此為止,其處理方式與一般的複製工具 (例如 scp) 的處理沒有太大的差別。

rsync 應該在 "rsync" 模式中操作,才能充分使用其所有的功能。執行方法是在其中一個系統上啟動 rsyncd 精靈。在 /etc/rsyncd.conf 檔案中設定它。例如,如果要讓 /srv/ftp 目錄可供 rsync 使用,請使用下列組態:

gid = nobody
uid = nobody
read only = true
use chroot = no
transfer logging = true
log format = %h %o %f %l %b
log file = /var/log/rsyncd.log

[FTP]
        path = /srv/ftp
        comment = An Example
 

接著使用 rcrsyncd  start 來啟動 rsyncd。在開機程序期間也可以自動啟動 rsyncd。設定的方式有兩種,一是在YaST 所提供的 runlevel 編輯器中啟用此服務,另一是手動輸入 insserv  rsyncd 指令。rsyncd 也可以由 xinetd 啟動。然而,只有對很少使用 rsyncd 的伺服器才建議這麼做。

本範例也建立了傾聽所有連線的日誌檔。這個檔案是儲存在 /var/log/rsyncd.log

這樣才可以從用戶端系統測試傳輸。使用下列指令來執行此動作:

rsync -avz sun::FTP
 

此指令會列出伺服器上 /srv/ftp 目錄中所有存在的檔案。這個要求也會記錄在 /var/log/rsyncd.log 日誌檔中。若要啟動實際的傳輸,請提供目標目錄。使用 . 來代表目前的目錄。例如:

rsync -avz sun::FTP .
 

依照預設,在使用 rsync 同步化時不會刪除檔案。如果要強制刪除檔案,就必須加上額外的選項 --delete。若要確保不會刪除較新的檔案,則可以改用 --update 選項。任何產生的衝突都必須手動解決。

27.6.2. 如需詳細資訊

關於 rsync 的重要資訊,請參閱 man 頁面。指令為 man rsyncman rsyncd.conf。如需關於 rsync 作業原則的技術參考資料,可在 /usr/share/doc/packages/rsync/tech_report.ps 中找到。您可以在專案網站 http://rsync.samba.org/ 上找到關於 rsync 的最新消息。