上接前文,前文提到web服務器附件不一樣步的問題,這裏補上文件同步的配置。由於是作相互同步,因此下面的操做在兩臺服務器上都要執行。web
安裝同步軟件(執行:源服務器和目標服務器)vim
# 安裝同步服務所需的軟件 yum -y install rsync
配置密碼本(執行:源服務器和目標服務器)服務器
mkdir -p /etc/rsyncfg/ # 注意:下面的兩個SyncPwd必須一致 echo 'SyncName:SyncPwd' > /etc/rsyncfg/server.pwd echo 'SyncPwd' > /etc/rsyncfg/client.pwd # 密碼文件配置權限 chmod 600 /etc/rsyncfg/server.pwd chmod 600 /etc/rsyncfg/client.pwd
配置防火牆端口(執行:源服務器)socket
# 開啓防火牆端口 firewall-cmd --zone=public --add-port=873/tcp --permanent firewall-cmd --reload
配置同步軟件(執行:源服務器)tcp
# 編輯配置文件 vim /etc/rsyncd.conf # 配置文件內容 uid = root gid = root use chroot = yes max connections = 4 transfer logging = yes timeout = 900 ignore nonreadable = yes dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 [uploads] path = /home/wwwroot/PublishPath/uploads comment = Host:192.168.6.100 uploads files # 排除目錄和文件,能夠爲各個模塊單獨配置此規則(必須是相對路徑) exclude = vendor .env ignore errors read only = yes write only = no list = no auth users = syncer secrets file = /etc/rsyncfg/server.pwd hosts allow = 192.168.6.110
重啓服務(執行:源服務器)ui
service rsyncd restart && service rsyncd status
執行同步操做(執行:目標服務器)rest
echo '' > /etc/rsyncfg/sync.log echo 'rsync -auv --password-file=/etc/rsyncfg/client.pwd SyncName@192.168.6.100::uploads /home/wwwroot/PublishPath/uploads/' > /etc/rsyncfg/sync.sh chmod +x /etc/rsyncfg/sync.sh cp /etc/rsyncfg/sync.sh /usr/sbin/
配置計劃任務(執行:目標服務器)code
crontab -e # 添加任務 # * * * * * /etc/rsyncfg/sync.sh # 取消前面的註釋便可 # 重啓定時任務服務 service crond restart && service crond status
問題彙總server
ERROR: auth failed on module XXXcrontab
@ERROR: auth failed on module XXX rsync error: error starting client-server protocol (code 5) at main.c(xxx) [Receiver=x.x.x] 一、密碼輸入錯誤: 請再次確認你登陸用戶的密碼無誤 二、secrets file格式錯誤: secrets file的文件格式是 upload:123456 表示upload用戶的rsync密碼是123456 三、配置文件寫錯: 最坑爹的一個,看看本身模塊配置下面的auth users、secrets file有沒寫錯 四、secrets file權限問題 服務端的secrets file權限必須是600, 可使用chmod 600 /home/user/test/rsync/etc/test.pass 五、secrets file文件擁有者與rsync運行者 服務端rsync服務是以什麼用戶運行,則必須保證secrets file文件擁有者必須是同一個 假設root運行rsync --daemon,則secrets file的owner也必須是root 六、若是是以--password-file=file的方式附帶密碼 確保客戶端密碼文件格式無誤,與服務端的密碼文件不一樣, 客戶端的不用加上用戶名,即直接是 123456
rsync: failed to connect to X.X.X.X Connection timed out (110)
rsync: failed to connect to 192.168.6.100 (192.168.6.100): Connection timed out (110) rsync error: error in socket IO (code 10) at clientserver.c(125) [Receiver=3.1.2] 端口不通,開啓防火牆的873端口: firewall-cmd --zone=public --add-port=873/tcp --permanent firewall-cmd --reload
ERROR: password file must not be other-accessible
ERROR: password file must not be other-accessible rsync error: syntax or usage error (code 1) at authenticate.c(196) [Receiver=3.1.2] 密碼本權限不對: chmod 600 /etc/rsyncfg/server.pwd chmod 600 /etc/rsyncfg/client.pwd