實作了一些簡單東東,就想來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模式使用。