需求:兩台伺服器(a、b),在伺服器a上存放着大量的圖檔,需要在每天夜裡三點同步到伺服器b,源目錄和目的目錄都是/p_w_picpath
啟用程式:rsync
伺服器a上的配置:
1、/etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = no
max connectionts = 6
read only = yes
hosts allow = 192.168.95.0/24
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
[p_w_picpath]
comment = p_w_picpath
path = /p_w_picpath/
ignore errors
list = no
auth users = root
secrets file = /etc/rsyncd.passwd
2、/etc/rsyncd.passwd
root:test
完成上面的配置後運作
# rsync --daemon
如果提示沒有找到rsyncd.passwd檔案則說明這個檔案沒有在預設的/etc/路徑下或者沒有建立,隻要把這個檔案移動過去就可以了
伺服器b上的配置:
/etc/rsync.passwd
dongpi2014
這裡要注意,伺服器a和伺服器b上對于密碼檔案的寫法是不一樣的,伺服器a的密碼檔案需要記錄使用者名,而伺服器b的密碼檔案不需要記錄使用者名。
之後執行指令
rsync -arv --password-file=/etc/rsyncd.passwd rsync://[email protected]/test /p_w_picpath/
這樣就開始同步了
注意:
如果有以下的報錯:
@error: unknown module 'xxx'
rsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6]
這個報錯表明密碼檔案的權限有問題,正常的密碼檔案權限應為600
the --password-file option may only be used when accessing an rsync daemon.
這個報錯表明伺服器端沒有執行rsync --daemon指令(沒有啟動服務)
@error: auth failed on module xxxxx
這個報錯表明伺服器a和伺服器b裡面的使用者名密碼有問題,有可能是伺服器b裡面使用者名密碼格式問題。
除了以上方法外,還可以用expect的自動互動腳本完成
#!/usr/bin/expect
set timeout 3000
spawn rsync -avcz --delete [email protected]:/p_w_picpath/ /p_w_picpath
expect "password:"
send "dongpi2014\r"
expect "]*"
exit
interact