无标题文章
需求:
每天晚上00:00讲web服务器A上打包备份系统配置文件,网站程序目录及访问日志,并用rsync整点推送到备份服务器B上
-
系统配置文件包括但不限于
a. 定时任务配置文件(/var/spool/cron/root)
b. 开机自启配置文件(/etc/rc.local)
c. 日常脚本目录(/server/scripts)
d. 防火墙iptables的配置文件(/etc/sysconfig/iptables) -
web服务器站点目录假定为(/var/html/www)
-
web服务器A的访问日志文件路径假定为(/app/logs)
-
web服务器保留打包后7天的备份数据即可(本地保留不能多于7天,因为太多的话硬盘会满),备份服务器B上要保留6个月的数据副本
-
备份服务器B上要按照备份数据服务器的IP为目录保存,打包文件按时间名字保存
第一个里程碑,rsync数据备份
- 配置rsync服务器
1.1 安装rsync
yum install -y rsync
1.2 配置rsync配置文件
vim /etc/rsyncd.conf
加入如下配置
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/run/rsyncd.log
read only = false
list = false
hosts allow = 172.16.1.0/24
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
path = /backup
1.3 配置密码本文件
vim /etc/rsync.password
写入设置的用户名和密码
rsync_backup:123456
1.4 修改密码本文件的权限
chmod 600 /etc/rsync.password
1.5 创建备份目录
mkdir /backup
1.6 创建虚拟用户
useradd rsync -s /sbin/nologin -M rsync
1.6 修改备份目录的权限所属
chown rsync:rsync /backup
- 配置客户端
2.1 安装rsync
yum install -y rsync
2.2 创建备份目录
mkdir /backup
2.3 创建密码文件
vim /etc/rsync.password
写入服务器端设置的密码
123456
2.4 修改密码文件权限
chmod 600 /etc/rsync.password
- 测试是否能同步
在客户机执行:
touch /backup/{1..9}
rsync -avz /backup/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password
第二个里程碑,web本地实现打包脚本
ip=$(ifconfig eth1 | awk -F '[ :]+' 'NR==2 {print $4}')
Path="/backup/$ip"
mkdir $Path
tar -zcf $Path/conf_$(date +%F).tar.gz /var/spool/cron/root /etc/rc.local /etc/sysconfig/iptables-config /server/scripts/
tar -zcf $Path/www_$(date +%F).tar.gz /var/html/www/
tar -zcf $Path/logs_$(date +%F).tar.gz /app/logs/
第三个里程碑,配置定时任务
配置web服务器的定时任务
mkdir -p /server/scripts
vim /server/scripts/backup.sh
写入以下内容
#!/bin/bash
IP=$(ifconfig eth1 | awk -F '[ :]+' 'NR==2 {print $4}')
Path="/backup/$IP"
[ ! -d $Path ] && mkdir $Path -p
#backup
tar -zcf $Path/conf_$(date +%F).tar.gz /var/spool/cron/root /etc/rc.local /etc/sysconfig/iptables-config /server/scripts/
tar -zcf $Path/www_$(date +%F).tar.gz /var/html/www/
tar -zcf $Path/logs_$(date +%F).tar.gz /app/logs/
#to bak server
/usr/bin/rsync -avz /backup/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password
#delete
find /backup -type f -name "*.tar.gz" -mtime +7 | xargs rm -f
web服务器端加入计划任务
crontab -e
00 00 * * * /bin/sh /server/scripts/backup.sh &> /dev/null
在backup服务器端编写脚本删除180天之前的压缩文件
mkdir -p /server/scripts/
vim /server/scripts/del.sh
写入以下脚本内容
/bin/find /backup -type f -name "*.tar.gz" -mtime +180 | xargs rm -f
写完后执行以下看是否有错误
sh /server/scripts/del.sh
加入计划任务删除180天之前的压缩文件
crontab -e
00 00 * * * /bin/sh /server/scripts/del.sh
完成!!!
用md5检测是否备份成功