一、伺服器端配置:
# yum -y install xinetd
CentOS預設已經安裝了rsync 服務.. 輸入 rsync 命令可檢視是否安裝.
# vi /etc/xinetd.d/rsync
將如下程式碼
service rsync
{
disable = yes
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = –daemon
log_on_failure += USERID
}
中的 disable = yes 改成 disable = no
然後啟動 xinetd
# /etc/init.d/xinetd start 或 service xinetd start
防火牆開啟...埠 預設埠是873
建立 rsync 配置檔案
mkdir /opt/local/rsync
vi /opt/local/rsync/rsyncd.conf (這個檔案不存在自己建立)
#Global Settings
uid = root #以什麼身份執行rsync
gid = root
use chroot = no #不使用chroot
max connections = 20 #最大連線數
secrets file = /opt/local/rsync/rsyncd.secrets #密碼檔案位置,認證檔案設定,設定使用者名稱和密碼
log file = /opt/local/rsync/log/rsyncd.log #指定rsync的日誌檔案,而不將日誌傳送給syslog
pid file = /opt/local/rsync/rsyncd.pid #指定rsync的pid檔案
lock file = /opt/local/rsync/rsync.lock #指定支援max connections引數的鎖檔案,預設值是/var/run/rsyncd.lock
comment = hello world
#motd file = /opt/local/rsync/rsyncd.motd #歡迎資訊檔名稱和存放位置(此檔案沒有,可以自行新增)
[backup] # 這裡是認證的模組名,在client端需要指定
path = /data/resource # 需要做映象的目錄
auth users = rsync # 授權帳號。認證的使用者名稱,如果沒有這行,則表明是匿名,多個使用者用,分隔
read only = no # yes只讀 值為NO意思為可讀可寫模式,資料恢復用NO
hosts allow = * #允許訪問的伺服器IP
hosts deny = * #黑名單
list = true # 允許列檔案
#ignore errors # 可以忽略一些無關的IO錯誤
#exclude = cache/111/ cache/222/ #忽略的目錄
建立密碼認證檔案.
vi /opt/local/rsync/rsyncd.secrets
rsync:111111 #使用者名稱:密碼
給檔案正確的許可權
# chown root:root /opt/local/rsync/rsyncd.secrets
# chmod 600 /opt/local/rsync/rsyncd.secrets #(必須是600)
啟動rsync
# rsync --daemon --config=/opt/local/rsync/rsyncd.conf
二、client 端進行同步
客戶端預設好像已經裝了rsync,沒有的話裝下:
# yum -y install rsync
建立密碼認證檔案
vi /data/rsync/rsyncd.pas
加入密碼
rsyncofpass
注意,客戶端的密碼檔案只需要密碼,而不需要使用者名稱!
更改密碼檔案的許可權
# chmod 0600 /data/rsync/rsyncd.pas
執行非同步同步操作:
rsync -vzrtopgu --progress --delete --password-file=/data/rsync/rsyncd.pas rsync@10.6.0.2::backup/data/resourcebak/
這個命令列中-vzrtopg裡的v是verbose,
z是壓縮傳輸,
r是recursive,
topg都是保持檔案原有屬性如屬主、時間的引數。
u是隻同步已經更新的檔案,避免沒有更新的檔案被重複更新一次,不過要注意兩者機器的時鐘的同步。
–progress是指顯示出詳細的進度情況,
–delete是指如果伺服器端刪除了這一檔案,那麼客戶端也相應把檔案刪除,保持真正的一致。
後 面的rsync@10.6.0.2::backup中,之後的backup是模組名, 也就是在/opt/local/rsync/rsyncd.conf中自定義的名稱,rsync是指定模組中指定的可以同步的使用者名稱。
最後的/www是備份到本地的目錄名。
在這裡面,還可以用-e ssh的引數建立起加密的連線。
可以用–password-file=/password/path/file來指定密碼檔案,這樣就可以在指令碼中使用而無需互動式地輸入驗證密碼了,這裡需要注意的是這份密碼檔案許可權屬性要設得只有屬主可讀。
#/usr/local/rsync/bin/rsync -vzrtopg –progress –delete rsync@10.6.0.2::backup /tmp/
Password:
或者你也可以制定password檔案
由於需要系統crontab執行,所以這裡採用讀入密碼檔案的方式,
OK 測試一下...