系统版本: CentOS 7
内核版本: 3.10.0-957
1、基本备份要求
已知3台服务器主机名分别为web01、backup 、nfs01,主机信息见下表:
服务器说明 | IP(NAT) | 内网IP(NAT_LAN) | 主机名称 |
---|---|---|---|
nginx web服务器 | 10.0.0.7/24 | 172.16.1.7/24 | web01 |
NFS存储服务器 | 10.0.0.31/24 | 172.16.1.31/24 | nfs01 |
rsync备份服务器 | 10.0.0.41/24 | 172.16.1.41/24 | backup |
要求:每天晚上00点整在Web服务器上打包备份系统配置文件、网站程序目录及访问日志并通过rsync命令推送备份服务器backup上备份保留。
实施方案流程
要备份的系统配置文件
第一步:查看rsync服务
查看rsync服务有没有安装 rpm -qa rsync
没有rsync服务就安装一下 yum install -y rsync
创建备份目录 mkdir /backup
第二部:编辑服务配置文件
uid = rsync # 虚拟用户 --安全性
gid = rsync
port = 873 # 端口号
fake super # 伪装超级用户 -- 管理员
use chroot = no # 安全有关参数
max connections = 200 # 大连接数量
timeout = 300 # 等待用户时间
pid file = /var/run/rsyncd.pid # 服务运行状态的进程号
lock file = /var/run/rsync.lock # 结合 max connections 控制大链接数
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 backup" # 模块注释说明
path = /backup # 模块指向目录所在
第三部:根据配置文件需求创建所需
1. useradd -M -s /sbin/nologin rsync # 创建虚拟用户
2. echo "rsync_backup:oldboy123" >/etc/rsync.password #创建认证用户密码
3. chmod 600 /etc/rsync.password # 密码文件设置安全权限 ★
4. mkdir /backup # 创建备份数据目录
5. chown rsync.rsync /backup/ # 修改文件属主属组为配置文件指定用户
6. systemctl start rsyncd # 启动服务程序
7. systemctl enable rsyncd # 设置服务程序开机自动启动
第四步: 配置邮件服务
1. yum install -y mailx
2. vim /etc/mail.rc # 添加下面的内容.随便位置
set from=QQ号码@qq.com # 邮箱随意.以QQ为例
set smtp=smtp.qq.com
set smtp-auth-user=QQ号码@qq.com
set smtp-auth-password=QQ设置里的第三方授权码
set smtp-auth=login
3. systemctl restart postfix.service # 重启邮件服务
4. echo "hello" | mailx -s "test" qq号@qq.com
第一步: 进行备份数据测试
rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
第二部: 实现免交互备份数据
echo oldboy123 >/etc/rsync.password # 创建认证用户密码文件
chmod 600 /etc/rsync.password # 为密码文件设置一个安全权限
rsync -avz /oldboy/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password # 实现免交互传输
web网站服务器
web客户端脚本编写:
mkdir -p /server/scripts mkdir /etc/sysconfig/iptables
mkdir -p /var/html/www mkdir /app/logs # 环境准备
cd /server/scripts
vim web_backup.sh
#!/bin/bash
ip=$(hostname -i)
name=$(hostname)
date=$(date +%F_%w -d "-1 day")
mkdir -p /backup/$ip
# 打包配置文件
tar zcnPf /backup/$ip/${name}_config_${date}.tar.gz /var/spool/cron/root /etc/rc.local /server/scripts &>/dev/null
# 打包站点目录
tar zcnPf /backup/$ip/${name}_www_${date}.tar.gz /var/html/www &>/dev/null
# 打包网站访问日志
tar zcnPf /backup/$ip/${name}_log_${date}.tar.gz /app/logs &>/dev/null
# 创建数据检验信息
md5sum $(find /backup/$ip -type f -mmin -15) >/backup/md5_${name}.log
# 上传数据到备份服务器
rsync -avz /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
# 删除本体超过7天的数据包
find /backup -type f -mtime +7 -delete &> /dev/null
chmod 700 /server/scripts/web_backup.sh
crontab -e # 加入定时任务里
0 0 * * * /bin/bash /server/scripts/web_backup.sh
nfs存储服务器
nfs客户单脚本编写:
mkdir -p /server/scripts mkdir /etc/sysconfig/iptables
cd /server/scripts
vim nfs_backup.sh
#!/bin/bash
ip=$(hostname -i)
name=$(hostname)
date=$(date +%F_%w -d "-1 day")
mkdir -p /backup/$ip
# 打包配置文件
tar zcnPf /backup/$ip/${name}_config_${date}.tar.gz /var/spool/cron/root /etc/rc.local /server/scripts &>/dev/null
# 创建数据检验信息
md5sum $(find /backup/$ip -type f -mmin -15) >/backup/md5_${name}.log
# 上传数据到备份服务器
rsync -avz /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
# 删除本体超过7天的数据包
find /backup -type f -mtime +7 -delete &> /dev/null
chmod 700 /server/scripts/nfs_backup.sh
crontab -e # 加入定时任务里
0 0 * * * /bin/bash /server/scripts/nfs_backup.sh
backup备份服务器
backup服务端脚本编写
mkdir -p /server/scripts
vim /server/scripts/delete.sh
#!/bin/bash
date=$(date +%F)
mkdir -p /backup
# 校验数据完整性
md5sum $(find /backup -type f -name "*.log") -c >/tmp/check_md5.txt
# 邮件告知管理员
mailx -s "$date 校验信息" qq号@qq.com
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。