全网备份项目环境准备
主机名称和IP地址规划
服务 | 主机名 | eth0网卡IP | eth1网卡IP | 软件 |
---|---|---|---|---|
防火墙服务器 | firewalld | 10.0.0.81 | 172.16.1.81 | firewalld |
负载均衡服务器 | lb01 | 10.0.0.5 | 172.16.1.5 | nginx,keepalived |
负载均衡服务器 | lb02 | 10.0.0.6 | 172.16.1.6 | nginx,keepalived |
web服务器 | web01 | 10.0.0.7 | 172.16.1.7 | nginx |
web服务器 | web02 | 10.0.0.8 | 172.16.1.8 | nginx |
web服务器 | web03 | 10.0.0.9 | 172.16.1.9 | nginx |
存储服务器 | nfs01 | 10.0.0.31 | 172.16.1.31 | nfs |
备份服务器 | backup | 10.0.0.41 | 172.16.1.41 | rsync |
数据库服务器 | db01 | 10.0.0.51 | 172.16.1.51 | mysql,mariaDB |
批量管理服务器 | m01 | 10.0.0.61 | 172.16.1.61 | ansible |
跳板机服务器 | jumpserver | 10.0.0.71 | 172.16.1.71 | jumpserver |
监控服务器 | zabbix | 10.0.0.72 | 172.16.1.72 | zabbix |
缓存服务器 | 暂无 | 暂无 | 暂无 | 暂无 |
- 备份服务器已经配置好了守护进程并启动,密码为
123456
vim /etc/rsyncd.conf
#指定管理备份目录的用户
uid = rsync
#指定管理备份目录的用户组
gid = rsync
#定义rsync备份服务的网络端口号
port = 873
#将rsync虚拟用户伪装成为一个超级管理员用户
fake super = yes
#和安全相关的配置
use chroot = no
#最大连接数 同时只能有200个客户端连接到备份服务器
max connections = 200
#超时时间(单位秒)
timeout = 300
#记录进程号码信息 1.让程序快速停止进程 2. 判断一个服务是否正在运行
pid file = /var/run/rsyncd.pid
#锁文件
lock file = /var/run/rsync.lock
#rsync服务的日志文件 用于排错分析问题
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 = "backup dir by 1997sty"
#模块中配置参数 指定备份目录
path = /backup
项目需求
- 所有服务器的备份目录必须都为/backup
- 要备份的系统配置文件包括但不限于
定时任务服务的配置文件
/var/spool/cron/root
(适合web和nfs服务器)
开机自启动的配置文件
/etc/rc.local
(适合web和nfs服务器)
日常脚本的目录
/server/scripts
(适合web和nfs服务器)
防火墙iptables的配置文件
/etc/sysconfig/iptables
- Web服务器站点目录假定为
/var/html/www
- Web服务器A访问日志路径假定为
/app/logs
- Web服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)
- 备份服务器上,保留每周一的所有数据副本,其它要保留6个月的数据副本
- 备份服务器上要按照备份数据服务器的内网IP为目录保存备份,备份的文件按照时间名字保存
- 需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发给系统管理员邮箱中
编写全网备份脚本
nfs01服务器备份脚本
#!/bin/bash
backup=/backup
ip_info=`hostname -i`
backup_path=$backup/$ip_info
#回到根
cd /
#创建目录
mkdir -p $backup_path
#打包备份内容
tar -zcvhf $backup_path/backup_`date +%F_week%w`.tar.gz ./var/spool/cron/root ./etc/rc.local ./server/scripts ./etc/sysconfig/iptables
#验证备份内容
find $backup_path/ -type f -mtime -1 ! -name "md5"|xargs md5sum > $backup_path/md5
#发送备份内容到服务器
rsync -avz /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
#删除7天前的备份信息
find $backup_path -mtime +7 -type f -exec rm -rf {} \;
web01服务器备份脚本
#!/bin/bash
backup=/backup
ip_info=`hostname -i`
backup_path=$backup/$ip_info
#回到根
cd /
#创建目录
mkdir -p $backup_path
#打包备份内容
tar -zcvhf $backup_path/backup_`date +%F_week%w`.tar.gz ./var/spool/cron/root ./etc/rc.local ./server/scripts ./etc/sysconfig/iptables
tar -zcvhf $backup_path/www_`date +%F_week%w`.tar.gz ./var/html/www
tar -zcvhf $backup_path/logs_`date +%F_week%w`.tar.gz ./app/logs
#验证备份内容
find $backup_path/ -type f -mtime -1 ! -name "md5"|xargs md5sum > $backup_path/md5
#发送备份内容到服务器
rsync -avz /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
#删除7天前的备份信息
find $backup_path -mtime +7 -type f -exec rm -rf {} \;
backup服务器备份脚本
#!/bin/bash
#删除超过180天不为星期一的备份
find /backup -type f ! -name "*week1.tar.gz" -mtime +180 -exec rm -rf {} \;
#验证结果
find /backup -type f -name "md5"|xargs md5sum -c | mail -s "备份结果" admin@1997sty.com
- 使用邮件服务需要配置
/etc/mail.rc
,并重启邮件服务systemctl restart postfix.service
vim /etc/mail.rc
set from=邮箱地址 smtp=邮件服务器地址
set smtp-auth-user=邮箱地址 smtp-auth-password=邮箱授权密码 smtp-auth=login
systemctl restart postfix.service
实现自动完成全网数据备份
nfs01服务器定时任务
#backup
0 0 * * * /bin/sh /server/scripts/backup.sh &>/dev/null
web01服务器定时任务
#backup
0 0 * * * /bin/sh /server/scripts/backup.sh &>/dev/null
backup服务器定时任务
#backup server
0 5 * * * /bin/sh /server/scripts/backup_server.sh &>/dev/null
最后一次更新于2020-01-10 21:30
0 条评论