rsync on ssh

常言道:『飲水思源』,在 Open Source 的世界裡,我們常常需要別人的幫助,但是在您有所心得的時候請記得分享給大家,『幫助人是快樂的喔』。歡迎您在使用 debian 的過程中的任何心得分享給大家。

rsync on ssh

文章alingo » 週一 11月 21, 2005 2:00 pm

最近因為工作上的需要使用到rsync
實作了一些簡單東東,就想來po出來。
請個位大大們指點指啦

主要分三個部分來講好了
1.rsync的基本資識
2.command實作
3.一些零碎的細節

==========rsync的基本資識============
rsync主要是用來copy 備份資料到遠端用的。
官方說法是可以分為二種方法來使用
第一種是藉由ssh or rsh來傳送資料
第二種是直接開啟rsync daemon來傳送資料
不過我覺得還可以在多分出一類使用方法啦
也就是這篇文章所要談的
就是利用ssh shell開啟一個rsync daemon傳送資料
傳完後即可關閉rsync daemon

再來介紹一下rsync主要會用到的設定檔
server:
rsync.conf (主要設定檔)
rsyncd.secrets (rsync的user password檔)
client:
rsyncd.password (對映rsync server上的密碼檔)

==========rsync command實作============
測試環境:
rsync server: 10.20.115.180
rsync client: 10.20.115.175
client端定時將/home/底下的資料備份到server上

step1.client & server 安裝rsync
(不用裝rsyncd因為rsync的server mode是靠參數控制的)

step2.設定server端
編輯/etc/rsync.conf
代碼: 選擇全部
transfer logging = yes                     #global的設定保持預設值即可
log file = /var/log/rsync/rsync         #global的設定保持預設值即可
pid file = /var/run/rsyncd.pid          #global的設定保持預設值即可
timeout = 600                               #global的設定保持預設值即可

#指定一個module name,client端
#用rsyncd模式連入時要指定一個module
[Home]
    #允許連入的IP,也可以寫成10.20.155.0/24的格式                 
    hosts allow = 10.20.115.175
    #其他都不允許
    hosts deny = *
    #module使用到的路徑             
    path = /home/             
    #指定一個rsyncd使用的username & password file
    secrets file = /etc/rsyncd.secrets
    #指定username當然要在出現在上一個參數指定的檔案內
    auth users = home_back
    #rsyncd的owner會影響備份檔案的使用者,
    #default是nobody,但是若要保留檔案權限就要設為root       
    uid = root     
    #會影響備份檔案的群組,default是nobody           
    gid = root   
    read only = no
[test]
        ...

編輯/etc/rsyncd.serets
代碼: 選擇全部
home_back password123      #建立一個username password 的對映檔


step3.設定client端
編輯/etc/rsyncd.password
代碼: 選擇全部
password123


step4.srync command
在client端下
代碼: 選擇全部
#rsync --archive --hard-link --verbose --progress --delete --compress \
--password-file=/etc/rsyncd.password \
-e 'ssh -l root' \
/home/ home_back@10.20.115.180::Home


成功的話就會先出現ssh連線提示,
並且尋問server端root的密碼
(當然可以用對稱金鑰方式做登入驗証啦...詳細步驟參考
http://linux.vbird.org/linux_server/0310telnetssh.php#ssh)
之後就看到rsync同步的進度啦!!!

==========其他細節============
先來說明一下那一長串的指令好了
第一行:
--archive :會保留檔案的權限,時間等等並會遞迴所有的子目錄
--hard-link:保留hard-link file
--delete:若來源端的檔案已經被殺掉了,在目的端之前的檔案也會自動被殺掉
--compress:傳送時壓縮
第二行:
指定rsync user使用密碼檔,該檔的權限應為600
第三行
-e指定remote shell,-l是指定remorte shell的登入者
第四行
first token是指定來源端,指定目錄時,
若最後有加"/"代表是要備份該目錄底下的檔案及子目錄。
若沒有加"/"則是備份該目錄

second token是指定目的端。
若目的端為remote server時可以用IP或是hosts name來指定。
IP前可加上@分隔符號以指定rsync username。
IP後面則可加上"::" 或 ":"分隔符號指定rsync server上設定的module name。
"::"表示要使用rsync daemon模式
":"則是給remote shell模式使用。
alingo
可愛的小學生
可愛的小學生
 
文章: 4
註冊時間: 週六 11月 19, 2005 4:39 pm

回到 share

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客