rsync服務(wù)排錯思路
服務(wù)端:
1.查看 rsync 服務(wù)配置文件路徑是否正確欣喧,正確的默認(rèn)路徑為:/etc/rsyncd.conf。
2.查看配置文件里 host allow、host deny 允許的 IP 網(wǎng)段是否是允許客戶端訪問的 IP 網(wǎng)段趟畏。
3.查看配置文件中 path 參數(shù)里的路徑是否存在芙委,權(quán)限是否正確(正常應(yīng)為配置文件中的 UID 參數(shù)對應(yīng)的屬主和組)谢澈。
4.查看 rsync 服務(wù)是否啟動洒嗤。查看命令為:ps -ef|grep rsync院尔。端口是否存在:netstat -lnt|grep 873
5.查看 iptables 防火墻和 Selinux 是否開啟蜻展?是否允許 rsync 服務(wù)通過,也可考慮關(guān)閉
6.查看服務(wù)端 rsync 配置的密碼權(quán)限是否為 600 邀摆,密碼文件格式是否正確(格式:用戶名:密碼文件格式是否正確(格式:用戶名)纵顾,文件路徑和配置文件里的 secrect files 參數(shù)對應(yīng)。
7.如果是推送服務(wù)栋盹,要查看下配置 rsyncd.conf 文件中用戶是否對模塊下目錄有可讀寫的權(quán)限
客戶端
1.查看客服端 rsync 配置的密碼是否為 600 權(quán)限施逾,密碼文件格式是否正確,注意:僅需要有密碼例获,并且和服務(wù)端的密碼一致汉额。
2.用 Telnet 連接 rsync 服務(wù)器 IP 地址 873 端口(telnet 172.16.1.41 873),查看服務(wù)是否啟動(可測試服務(wù)端防火墻是否阻擋)榨汤。
3.客服端執(zhí)行命令時蠕搜,語法格式書寫是否正確,此命令的細(xì)節(jié)記清楚收壕,尤其語法格式中的雙冒號及隨其后的 backup 為模塊名稱
rsync企業(yè)應(yīng)用場景
1讥脐、內(nèi)部人員產(chǎn)生的數(shù)據(jù)(定時備份足矣):
程序員開發(fā)代碼(他電腦上)==>代碼服務(wù)上(git/svn代碼版本管理)==>測試環(huán)境測試===>正式環(huán)境
原則上程序代碼可以不備份遭居。
運(yùn)維人員,寫個定時任務(wù)旬渠,寫個備份腳本俱萍,更改或增加服務(wù)配置rsyncd.conf,需要備份
運(yùn)維人員修改配置(測試服務(wù)器)==>代碼服務(wù)器上(git/svn代碼版本管理)==>測試環(huán)境測試===>正式環(huán)境
原則上運(yùn)維人員的變更可以不備份告丢。
2枪蘑、用戶產(chǎn)生的數(shù)據(jù)(必須實時備份)
圖片、視頻等文件是放在存儲服務(wù)器上的岖免,任意時刻都可能傳上來岳颇,必須實時備份。
文本(博客文章)颅湘,放在數(shù)據(jù)庫里话侧,,任意時刻都可能發(fā)布闯参,必須實時備份瞻鹏。
項目實戰(zhàn)
解決思路:
1) 搭建 backup 服務(wù)器
部署 rsync 服務(wù)
2) 搭建 web01 服務(wù)器
驗證 rsync 服務(wù)能否推送成功
開發(fā)腳本實現(xiàn)打包、備份鹿寨、推送新博、校驗、刪除
3) 配置定時任務(wù)每天 00 點(diǎn)定時推送
4) backup 服務(wù)器
開發(fā)腳本實現(xiàn)校驗脚草、刪除赫悄、報警
配置定時任務(wù)每天 8 點(diǎn)定時執(zhí)行
a.安裝服務(wù)軟件
[root@backup ~]# rsync --version
rsync version 3.1.2 protocol version 31
b.備份并配置文件 /etc/rsync.conf
cp /etc/rsyncd.conf{,.ori}
cat>/etc/rsyncd.conf<<EOF
#rsync_config_______________start
#created by oldboy
#site: http://www.oldboyedu.com
uid = rsync
gid = rsync
use chroot = no
fake super = yes
max connections = 200
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment = welcome to oldboyedu backup!
path = /backup/
EOF
c.創(chuàng)建用戶和備份目錄
[root@backup ~]# useradd rsync
[root@backup ~]# id rsync
uid=1001(rsync) gid=1001(rsync) groups=1001(rsync)
[root@backup ~]# mkdir –p /backup
[root@backup ~]# chown -R rsync.rsync /backup/
[root@backup ~]# ls -ld /backup/
drwxr-xr-x 2 rsync rsync 6 4 月 15 12:12 /backup/
d.啟動和檢查
systemctl start rsyncd
systemctl enable rsyncd
systemctl status rsyncd
[root@backup ~]# ps -ef|grep sync|grep -v grep #檢查進(jìn)程
root 7521 1 0 11:39 ? 00:00:00 /usr/bin/rsync --daemon --no-detach
[root@backup ~]# netstat -lntup|grep 873 #檢查端口
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN
7521/rsync
tcp6 0 0 :::873 :::* LISTEN 7521/rsync
[root@backup ~]# lsof -i :873 #檢查端口
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsync 7521 root 3u IPv4 41439 0t0 TCP *:rsync (LISTEN)
rsync 7521 root 5u IPv6 41440 0t0 TCP *:rsync (LISTEN)
e.配置密碼文件
[root@backup ~]# echo "rsync_backup:oldboy" > /etc/rsync.password
[root@backup ~]# chmod 600 /etc/rsync.password
[root@backup ~]# cat /etc/rsync.password
rsync_backup:oldboy
[root@backup ~]# ls -l /etc/rsync.password
-rw------- 1 root root 20 4 月 15 11:51 /etc/rsync.password
f.客戶端rsync配置
[root@web01~]# ehco 'exportRSYNC_PASSWORD=123456'>>/etc/bashrc
[root@web01 ~]# tail -1 /etc/bashrc
export RSYNC_PASSWORD=123456
[root@web01 ~]# . /etc/bashrc
[root@web01 ~]# echo $RSYNC_PASSWORD
123456
g.開發(fā)腳本
touch /server/scripts/bak.sh #創(chuàng)建腳本文件
#!/bin/bash
IP=`ifconfig eth1 |awk -F "[ ]+" 'NR==2{print $3}'` #定義變量 IP
[ -d /backup/$IP ] || mkdir -p /backup/$IP #判斷 IP 目錄是否存在
if [ $(date +%w) -eq 2 ] #判斷如果周數(shù)=2 則打包文件日期為前一天
then
date=$(date +%F -d "-1day")_Monday #標(biāo)記周一的文件
else
date=$(date +%F -d "-1day")
fi
cd / &&\
#打包
tar zcfh /backup/$IP/sysconfig_${date}.tar.gz var/spool/cron/root etc/rc.local
server/scripts &&\
tar zcf /backup/$IP/webdata_${date}.tar.gz var/html/www &&\
tar zcf /backup/$IP/accesslog_${date}.tar.gz app/logs &&\
#查找
find /backup -type f -name "*.tar.gz" | xargs md5sum >/backup/$IP/check_${date}
&&\
#推送
rsync -az backup/ rsync_backup@172.16.1.41::backup
--password-file=/etc/rsync.password &&\
#刪除
find backup/ -type f -name "*.tar.gz" -mtime +7 |xargs rm –rf
h.配置定時任務(wù)
[root@web01 /server/scripts]# crontab -e
#crond-id-001:time sync by oldboy
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null
#每天定時推送備份文件到 backup 服務(wù)器
00 00 * * * /bin/bash /server/scripts/bak.sh &>/dev/null
i.服務(wù)端配置校驗,報警
touch /server/scripts/bakup.sh
#!/bin/bash
export LANG="en"
find /backup/ -type f -name "check_${date}*" | xargs md5sum
-c >>/tmp/mail_$(date +%F).txt
IP=`ifconfig eth1 |awk -F "[ ]+" 'NR==2{print $3}'` #定義變量 IP
find /backup/ -type f -name "*.tar.gz" -mtime +180|xargs rm -rf
find /backup/ -type f ! -name "*_Monday.tar.gz" -mtime +7|xargs rm -rf
mail -s "備份校驗_$date" championzjy888@163.com </tmp/mail_$(date +%F).txt
j.配置定時任務(wù)發(fā)送郵件
[root@backup /server/scripts]# crontab -e
#crond-id-001:time sync by oldboy
#每天 8 點(diǎn)執(zhí)行校驗馏慨、刪除埂淮、發(fā)送郵件
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null
00 08 * * * /bin/bash /server/scripts/backup.sh >&/dev/null
校驗?zāi)_本
#!/bin/sh
# by oldboy at 20160927
# www.oldboyedu.com
IP=$(hostname -i)
Path=/backup
#保持每周 1 的副本
if [ $(date +%w) -eq 2 ];then
date="$(date +%F -d "-1day")_week1"
else
date="$(date +%F -d "-1day")"
fi
LANG=en
find /backup -type f -name "*${date}*.log"|xargs md5sum
-c >>$Path/${date}_result.log 2>&1
mail -s "$date bak result" oldboytraining@163.com <$Path/${date}_result.log
find /backup/ -type f -mtime +7 ! -name "*week1*"|xargs rm -f
find /backup/ -type f -mtime +180|xargs rm -f
mail -s "result.log" xxxxx@xx.com </$Path/${date}_result.log