SERVER 端
[1.] apt-get install rsync
[2.] 啟動 rsync
第一種方式
vi /etc/xinetd.d/rsync
disable = no
service xinetd restart
第二種方式
執行
rsync –daemon
或者
rsync –daemon –address=192.168.1.12 –port=873 –config=/etc/rsyncd.conf
注意,當無法啟動,原因會是/etc/rsyncd.conf不存在,可先 touch /etc/rsyncd.conf
[3.] vi /etc/rsyncd.conf
max connections = 4
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
[share1]
comment = cross's share1
path=/tmp/share1
auth users=cross
uid=root
gid=root
secrets file=/etc/rsyncd.secrets
read only=no
[share2]
comment = cross's share2
path=/tmp/share2
auth users=cross2
uid=root
gid=root
secrets file=/etc/rsyncd.secrets
read only=no
hosts allow=192.168.1.0/24 10.1.1.0/24 *.ssorc.tw
參數說明:
[host] # 代表備份主機代號
comment
path # 備份資料放置的路徑
port # 定義Listen port
address # 定義Listen address
max connects # 最大連線數
auth users # 定義授權的帳號
uid # 傳輸中執行時的uid
gid # 傳輸中執行時的gid
secrets file # 認證密碼檔的位置
read only # 是否唯讀
hosts allow # 允許主機
ignore errors # 忽略I/O錯誤
dont compress # 傳輸過程中不壓縮的檔
# 預設是 *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
[4.] vi /etc/rsyncd.secrets
cross:123456
cross2:1234567
[5.] chmod 600 /etc/rsyncd.conf /etc/rsyncd.secrets
[6.] 測試執行
rsync -vv localhost::
share1 cross's share1
share2 cross's share2
Client 端
rsync [option] [source] [destination]
測試,需要手動輸入password
rsync -av /var/log/httpd cross@serverip::share1
或者
rsync -av /var/log/httpd rsync://cross@localhost:873/share1
如果是
rsync -av cross@serverip::share1 /var/log/httpd
或者,備份的方向就相反了
rsync -av rsync://cross@serverip:873/share1 /var/log/httpd
測試,無需手動輸入password
vi /etc/rsyncd.secrets
123456
chmod 600 /etc/rsyncd.secrets
rsync -av –password-file=/etc/rsyncd.secrets /var/log/httpd cross@serverip::share1
rsyncd.secrets當中的password只能存在一行,所以其它rsync需指定其它rsyncd.secrets ???
參數說明:
-v # verbose
-a # archive mode,同等-rlptgoD,但沒有-H
-r # 是recursive
-R # 保留相對路徑,才不會讓子目錄與parent放在同一層
-u # destination(receiver)的檔案較新時,忽略
-d # without rescursive
-l # copy symlinks as symlinks
-H # 保留 hard links
-p # 保留權限
-o # 保留owner
-g # 保留group
-D # 保留devices
-t # 保留times
-S # 有效率的處理稀少檔案
-e # 指的是使用 什麼指令進行連線
# -e ssh
# –rsh=/usr/bin/ssh
–delete # 是指如果source端(sender)少了某一檔案,那destination端也應把這少的檔案刪除,保持一致
-z # 傳輸當中進行壓縮
–progress # 顯示出詳細的進度情況
–stats # 顯示統計
ChangeLog 2006/11/18,建議指令 rsync -aSH –delete
使用ssh,多了安全加密
rsync -aSH –delete -e 'ssh -l root' rsync.server::s_path d_path
但如果要直接用 ssh方式,那 rsync server(873)其實就不用架設了,
更方便的是可以隨時指定要同步的目錄,不用再定義在 rsyncd.conf裡了。
rsync -aSH –delete -e 'ssh -l root' server:/root/ d_path
或者是 rsync -aSH –delete root@server:/root/ d_path
[Q&A]
rsync -avSH –delete –password-file=/etc/rsyncd.secrets /path/* [email protected]::share
#———————————————————————-rsync client——rsync server
#———————————————————————-master———–slaver
此指令在rsync client 執行的,
假如來源端已無某個檔案存在時,'*' 參數會使當你要用–delete功能時,讓程式有錯誤產生,
且'*'也會讓如果來源端已沒有這檔案了,目的端還是會有這檔案的存在,–delete功能無作用。
會多加' * ',也是為了rsync此路徑裡的檔案,解決方式,只能先切換至此路徑,再將來源端路徑設為 ' ./ '。
不過後來又經過測式,/path/,rsync 認定是此目錄裡的檔案,而/path,則認定為此目錄,也就是說可以不管'*'。
補 – 2008/02/02
假如加了 -R 參數,它是用來保留來源目錄完整路徑,不過此時 /path 與 /path/ 的功用也就失效了
[Q1:] password file must not be other-accessible
continuing without password file
Password:
[A1:] 表示 rsyncd.secrets 的檔案權限屬性不對,應設為 600
[Q2.] @ERROR: auth failed on module xxxxx
rsync: connection unexpectedly closed (90 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) at io.c(150)
[A2:] 密碼設錯, 無法登入成功, 檢查 rsyncd.secrets 中的密碼設定, 二端是否一致?
留言