1. 程式人生 > >rsync全網備份項目

rsync全網備份項目

rsync

rsync全網備份項目

具體要求:
1,所有服務器(定時任務,開機自啟動,日常腳本目錄,防火墻配置文件),tar包到/backup目錄,再推送到備份服務器
2,web服務器站點tar包到/backup目錄(假定為:/var/www/html/),再推送到備份服務器,
3,web服務器訪問日誌tar包到/backup目錄(假定為:/var/log/),再推送到備份服務器
4,所有本地tar包保留時間為7天,備份服務器上保留6個月
5,備份服務器上按照備份數據的主機名+ip為目錄的形式保存,要求所有tar包按時間名保存

#服務器配置
[root@BACKUP]# yum -y install rsync

[root@BACKUP yum.repos.d]# cat /etc/rsyncd.conf

#rsync_config
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[backup]
path = /backup
ignore errors
read only = false
list = false
hosts allow = 192.168.44.0/24
hosts deny = 0.0.0.0/32
auth users = rsync
secrets file = /etc/rsync.password

[root@BACKUP ~]# useradd rsync -s /sbin/nologin -M #創建用戶,不登錄系統
[root@BACKUP ~]# rsync --daemon #啟動rsync服務

[root@BACKUP ~]# mkdir /backup #創建共享目錄
[root@BACKUP ~]# chown -R rsync.rsync /backup/ #權限給rsync
[root@BACKUP ~]# chmod -R 755 /backup #設置目錄權限

[root@BACKUP ~]# echo "rsync:yehaixiao" /etc/rsync.password #創建密碼文件

[root@BACKUP ~]# chmod 600 /etc/rsync.password #設置文件的權限

[root@BACKUP ~]#mkdir -p /srv/scripts/
[root@BACKUP ~]#mkdir -p /srv/bak-erroe-log/

[root@BACKUP /]# /etc/init.d/postfix start
[root@BACKUP /]# chkconfig postfix on

#服務器腳本內容
[root@BACKUP scripts]# cat checkbak.sh #md5sum驗證數據,並發郵件
#/bin/sh
find /backup/ -type f -name "flag_$(date +%F).txt" |xargs md5sum -c |grep FAILED >> /srv/bak-erroe-log/erroe$(date +%F).log

mail -s "$(date +%U%T) bakcup" root < /srv/bak-erroe-log/erroe$(date +%F).log

[root@BACKUP scripts]# cat 180daydel.sh #刪除備份服務器上備份目錄,超過180的tar.gz包
#/bin/sh
find /backup/ -type f -name "*.tar.gz" -mtime +180 |xargs rm -f

[root@BACKUP scripts]# crontab -l
/5 /usr/sbin/ntpdate -u m01 >/dev/null 2>&1
00 00
/bin/sh /srv/scripts/checkbak.sh >/dev/null 2>&1
00 00 * /bin/sh /srv/scripts/180daydel.sh >/dev/null 2>&1

#客戶端配置
[root@M01 ~]# yum install rsync -y
echo "yehaixiao" >/etc/rsync.password #“yehaixiao”為密碼
[root@NFS01 ~]# chmod 600 /etc/rsync.password #設置文件的權限
[root@NFS01 ~]# mkdir /backup #本地用來打包的目錄,然後rsync推送

#客戶端rsync推送命令
rsync -avz --password-file=/etc/rsync.password /backup/ rsync@BACKUP::backup

#客戶端腳本內容
[root@NFS01 scripts]# cat backup.sh
#!/bin/sh
#backup
hostn=$(hostname)
ip=$(grep -i ipaddr /etc/sysconfig/network-scripts/ifcfg-eth0|awk -F "=" ‘{print $2}‘)
Path="/backup/$hostn-$ip"
mkdir -p /$Path

#tar
tar zcf /$Path/www$(date +%F).tar.gz /var/www/html/ &&\
tar zcf /$Path/log$(date +%F).tar.gz /var/log/ &&\
tar zcf /$Path/conf$(date +%F).tar.gz /var/spool/cron/root /etc/rc.local /etc/sysconfig/iptables /srv/scripts/ &&\

find /$Path/ -type f -name "$(date +%F).tar.gz"|xargs md5sum > /$Path/flag_$(date +%F).txt
rsync -avz --password-file=/etc/rsync.password /backup/ rsync@BACKUP::backup
find /backup/ -type f -name "
.tar.gz" -mtime +7 |xargs rm -f

[root@WEB02 scripts]# crontab -l
/5 /usr/sbin/ntpdate -u m01 >/dev/null 2>&1
00 00
/bin/sh /srv/scripts/backup.sh >/dev/null 2>&1

rsync全網備份項目