rsync 服務器設置記錄

rsync 是一個*nux上的同步工具,用於異域同步效果不錯,而且設置也非常方便。它的運作模式屬於Client-Server形態。就是說要同步的話,其中一方需要先處於待命狀態(Server 服務器),而另一方則負責發起同步工作(Client)。

安全方面,由於可以透過 SSH 進行安全接入,所以只要管理員所設置的賬號和密碼可以滿足安全指南的要求,基本上不會因為開啟它,而造成任何安全問題。

說實在,SSH這個工具開發了這麼久,而且也被廣為使用,安全方面無可憂慮。會出現問題的,都是人為因素。在電腦安全管理行業內,其中一個經典笑話就是:

系統管理員常用密碼:
admin, passwd, password, god/dog, sexy, superman…

但這個笑話可是真的可以常不常在現實中,可以碰得上。所以系統安全方面最大的破綻就是人。

好了,又扯遠了。。。下面是在Ubuntu上設置rsync服務器的工作記錄,還加一些自己的少許心得。歡迎參考及提問。

事前檢查

首先不管你用的是什麼Linux系統,需要確認已經安裝好了 rsync 配件。在Ubuntu上,我習慣使用chkconfig做檢查。這個小工具的好處是,在確認是在確認是否已經安裝了之餘,也一同檢查它是否已經設置好在那個init層次自動啟用。如果不想要安裝什麼小工具,也可以直接用 service 檢查運行狀態,之後再手動檢查init rc設置就好了。

指令:chkconfig --list | grep rsync

rsync - chkconfig

指令:service rsync status

rsync - not running

 

如果還沒安裝,系統會給予安裝建議,可以輸入 apt-get install rsync 進行自動安裝。(小嘮叨:比較起5年前的Linux來說,這種安裝方式已經是非常方便了。)

 

服務器設置

設置方式非常簡單,只有兩個步驟:

  1. 建立設置檔
  2. 啟動服務器

步驟1. 建立設置檔

預設中,rsync 在安裝時不會自動建立設置檔,所以我們需要自己弄一個。在 /etc 這個文件夾內,建立一個新的文字檔,檔案名稱是 rsyncd.conf 。

指令:touch rsyncd.conf

rsyncd.conf 的內容,就是這個服務器的基本設置。可使用任何熟悉的文字檔編輯工具,修改這個設置檔即可,每一行都是個別設置。下面是一個基本設置的例子:

log file = /var/log/rsyncd.log

[My File Repository]
path = /home/myfile
comment = My File Repository
uid = nelson
gid = family
read only = no
list = yes

hosts allow = 192.168.123.123

transfer logging = no
# log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.
timeout = 600
# refuse options = checksum dry-run
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz

說明:

  • log file = /xxxxx/xxxxx.log
    • 指定工作記錄儲存位置。Linux上,建議的位置是 /var/log 裡面。
  • [My File Repo…. ]
    • rsync可操作的區塊名稱。一個rsync服務器可以設置多個操作區塊。名字不宜過長。當用戶聯接進來時,所看到的就是這個區塊名列表。因此建議取名時,用比較能看得懂用途的名稱。
  • path
    • 文件儲存的真實位置。規範建議是用戶的文件,最好一般都在 /home 內。當然你想要劃出一個特殊位置來儲存這些同步檔案,也沒問題。要注意的是這個實體位置的 Access Level 要設置對哦!要不,聯接時就會出現錯誤。
  • comment = xxxxxxxx
    • 這個可以隨意。。。 😛
  • uid = xyz    和 gid = xyz
    • 當文件傳輸過來服務器後,其擁有人 (uid) 和組別 (gid) 都會設置成這個一樣。可以和登錄使用的用戶賬號不一樣也沒問題。
  • readonly
    • 同上。傳輸後的文件預設值。yes 是設置為“只讀”。
  • list
    • 是否允許登錄者讀取真實位置內的文件列表。
  • hosts allow
    • 只允許某個IP的機器登錄進這個服務區塊。
  • transfer logging 和 log format
    • 是否要記錄所有檔案傳輸記錄。log format 是記錄的格式設置。
  • timeout
    • 限制最高單一檔案傳輸的時間,時間到達後將會自動掉線。如果同步的內容中有非常多大容量檔案,建議設置較大數值,計算單位是秒。600秒等於10分鐘。
  • refuse options
    • 限制有哪些指令不可以運行。例子中的 dry-run 是用於 rsync 指令測試的,意為模擬運行後提供結果,不會有實體檔案傳送或備份。
  • dont compress
    • 不壓縮這些檔案。為了減少運輸時間,一般都會指定在聯接人的系統上預先壓縮檔案,然後才傳送過來服務器上。但如果一些檔案是已經壓縮了,在進行壓縮工作基本上就是浪費時間,所以它提供了這麼一個設置,用於減輕工作流程需時。

 

步驟2. 啟動服務器

設置完成了,當然就進行啟動了。這,我使用service來進行啟動工作。

指令: service rsync start

如果一切順利,你將可以看到以下訊息:

rsync - startup done

但結果你很可能會見到這個錯誤訊息:

rsync - startup error

 

其實這錯誤訊息已經告訴你了,還有一個小步驟沒完成。

用任意文字處理工具,打開上面說的 /etc/default/rsync 。

rsync - default configuration

找出這個段落 RSYNC_ENABLE=false ,把 false 改成 true,然後儲存即可。其它的設置暫時沒用得上,可以不必管。

最後再次用 service 啟動服務器,應該就沒問題了。