全网备份项目
要求:每天晚上 00 点整在 Web 服务器上打包备份系统配置文件、网站程序目录及访问日志并通过 rsync 命令推送备份服务器 backup 上备份保留(备份思路可以是先在本地按日期打包,然后再推到备份服务器 backup 上),NFS 存储服务器同 Web 服务器,实际工作中就是全部的服务器。
简单整理后具体要求如下:
客户端要求:
1.备份目录为/backup
2.配置文件包括但不限于
定时任务服务的配置文件(/var/spool/cron/root)
开机自启动的配置文件(/etc/rc.local)
日常脚本的目录 (/server/scripts)
防火墙 iptables 的配置文件(/etc/sysconfig/iptables)
3.备份保留七天,太多会占用大量磁盘空间
4.web服务器上站点目录(假设为/var/html/www)
日志文件假定为/app/logs
服务端要求:
1.保留每周一的备份,其他保留180天
2.确保数据完整性,将成功或失败结果发送到邮箱
3.按照内网IP作为目录保存
rsync全网备份项目部署过程
1.用户端编写:
1.创建脚本
mkdir -p /server/scripts
touch /server/scripts/rsync.sh
2.打开脚本
vim /server/scripts/rsync.sh
3.脚本里面编写
#!/bin/bash
#设置环境变量
TIME=$(date +%F_week%w)
IP=`hostname -I|awk '{print $1}'`
#创建目录
mkdir -p /backup/$IP/$TIME
#创建压缩文件
tar zcvfh /backup/$IP/$TIME/$TIME.tar.gz /var/spool/cron/root /etc/rc.local /server/scripts /etc/sysconfig/iptables /var/html/www /app/logs
#创建指纹
md5sum /backup/$IP/$TIME/$TIME.tar.gz > /backup/$IP/md5.txt
#发送到backup备份服务器
rsync -avz /backup/$IP/$TIME --delete rsync_backup@backup::backup --password-file=/etc/rsync.passwd
#找出七天以前的文件删除掉
find /backup/ -type f -name "*.tar.gz" -mtime +7 |xargs rm -rf
4.执行脚本测试
sh /server/scripts/rsync.sh
2.编写服务端脚本
1.创建脚本文件
mkdir -p /server/scripts
touch /server/scripts/rsync.sh
2.编写服务端脚本
#!/bin/bash
#找出180天以前的并且删除只保留每周一的文件
find /backup -type f -mtime +180 ! -name "*week1.tar.gz" |xargs rm -rf
#对比文件传输是否有误
find /backup -type f -name "md5.txt" |xargs md5sum -c >/data/baogao.txt
#将对比结果用邮箱发送出去
mail -s "领导请查看今天的汇报" [email protected] </data/baogao.txt
4.执行脚本测试
5.客户端服务端测试后写入定时任务中(crontab)
使用IP地址命名目录用来区分不同的服务器
压缩包加上时间防止名字相同而覆盖
客户端服务端文件防止路径要保持一致,防止mf5sum核对文件时路径不对
邮箱设置:
1.打开邮箱的配置文件
vim /etc/mail.rc
2.在文件尾部加上(此处以163邮箱为例)
set from=(此处为邮箱地址) smtp=smtp.163.com
set smtp-auth-user=(此处为邮箱地址) smtp-auth-password=(授权的密码) smtp-auth=login
3.使用浏览器打开邮箱点击设置选择pop3/smtp/imap 设置选项
将IMAP/SMTP服务选项选择上
下面记住SMTP服务器的域名
设置客户端授权密码
4.重启邮箱
命令行执行:systemctl restart postfix.service