rsync备份项目
1. rsync的部署
1.1 rsync部署
1.2 mail发送配置
首先准备163邮箱。
设置SMTP
linux上的配置
vim /etc/mail.rc
set from=你的邮箱账号@163.com smtp=smtp.163.com
set smtp-auth-user=你的邮箱账号@163.com smtp-auth-password=smtp的授权码 smtp-auth=login
重启邮箱服务
systemctl restart postfix.service
发送邮件测试
mail -s "邮件测试" 3307235355@qq.com </etc/hosts
或
echo "邮件发送测试"|mail -s "邮件测试" 3307235355@qq.com
2. 服务器的准备
三台服务器:存储,备份,网络服务器
服务器的外网ip 内网ip 主机名称
192.168.2.41 172.16.1.41 backup
192.168.2.31 172.16.1.31 nfs01
192.168.2.7 172.16.1.7 web01
虚拟机的克隆可以参考:点击了解配置多台虚拟的服务器
3. 完成项目需求
3.1项目的具体需求
1)所有服务器的备份目录必须都为/backup
web01 nfs01 backup
2)要备份的系统配置文件包括但不限于:
a.定时任务服务的配置文件(/var/spool/cron/root)(适合web和nfs服务器)
b.开机自启动的配置文件(/etc/rc.local)(适合web和nfs服务器)
c.日常脚本的目录(/server/scripts)。
d.防火墙iptables的配置文件(/etc/sysconfig/iptables)
web01 nfs01
3)Web服务器站点目录假定为(/var/html/www)
4)Web服务器A访问日志路径假定为(/app/logs)
5)Web服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)
web01 nfs01
6)备份服务器上,保留每周一的所有数据副本,其它要保留6个月的数据副本
部署好rsync守护进程服务
backup
7)备份服务器上要按照备份数据服务器的内网IP为目录保存备份,备份的文件按照时间名字保存。OK
8)需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发给系统管理员邮箱中(发邮件技巧见VIP群资料)。
backup
3.2实现命令
文件本地的压缩备份
解释说明:tar参数:h 假若目录中有软连接,会追踪到源文件进行压缩,v显示压缩过程,但在脚本的时候不需要,就不写
cd /
tar zchf /backup/172.16.1.31/backup_system_data$(date +%F_week%w).tar.gz ./var/spool/cron/root ./etc/rcc/local /server/scripts ./etc/sysconfig/iptables
tar zchf /backup/172.16.1.31/www_html_backup$(date +%F_week%w).tar.gz /var/html/www
tar zchf /backup/172.16.1.31/www_logs_backup$(date +%F_week%w).tar.gz /app/logs
删除超过时间的数据
find /backup -type -f -mtime +7 | xargs rm
备份服务器上删除数据
find /backup -type -f -mtime +180 ! -name "*week1.tar.gz" | xargs rm
传输数据核对(mod5sunm mod5sum -c)
客户端生成核对信息
find /backup/ -type f -mtime -1 ! -name "finger*" | xargs mod5sum > /backup/172.16.1.31/finger.txt
服务器端进行验证
find /backup/ -type f -mtime -1 -name "finger.txt" | xargs mod5sum -c > /tmp/check.txt
客户端推送数据
rsync -avz /backup/172.16.1.31 rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
4.脚本
4.1 客户端脚本
存储服务器backup
backup.sh
#!/bin/bash
Backup_dir="/backup"
IP_info=$(hostname -i)
#create backup dir
mkdir -p /$Backup_dir/$IP_info
#tar system file
cd /
tar zcf /$Backup_dir/$IP_info/backup_system_data$(date +%F_week%w).tar.gz ./var/spool/cron/root ./etc/rc.local ./server/scripts
#del 7 day ago file
find /backup -type f -mtime +7 | xargs rm 2>/dev/null
#create finger file
find /backup/ -type f -mtime -1 ! -name "finger*" | xargs md5sum > /$Backup_dir/$IP_info/finger.txt
rsync -az /$Backup_dir/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
web01服务器
#!/bin/bash
Backup_dir="/backup"
IP_info=$(hostname -i)
#create backup dir
mkdir -p /$Backup_dir/$IP_info
#tar system file
cd /
tar zcf /$Backup_dir/$IP_info/backup_system_data$(date +%F_week%w).tar.gz ./var/spool/cron/root ./etc/rc.local ./server/scripts
#del 7 day ago file
find /backup -type f -mtime +7 | xargs rm 2>/dev/null
#create finger file
find /backup/ -type f -mtime -1 ! -name "finger*" | xargs md5sum > /$Backup_dir/$IP_info/finger.txt
rsync -az /$Backup_dir/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
4.2 备份服务器脚本
#!/bin/bash
#del 180 ago day
find /backup/ -type f -mtime +180 ! -name "*week1.tar.gz"
#check backup data
find /backup/ -type f -name "finger.txt"|xargs md5sum -c >/tmp/check.txt
#sed email
mail -s "check data backup" 3307235355@qq.com </tmp/check.txt
5.自动化脚本定时任务
5.1客户端的定时任务
crontab -e
# backup data
0 0 * * * /bin/sh /server/scripts/backup.sh &>/dev/null
5.2服务器端的定时任务
# check backup data
0 5 * * * /bin/sh /server/scripts/backup_server.sh &>/dev/null
查看任务
crontab -l