异地数据实现自动定时备份与定时删除

数据无价,做好备份

分析:
实现每天晚上00点整在Web服务器A上打包备份相关目录并通过rsync命令推送到服务器B上保存
需求:
Web服务器保留打包后的7的备份数据即可(本地留存不能多于7天)备份服务器上要保留6个月的数据副本,备份服务器上要按照备份数据IP进行保存,打包文件要按照时间名字进行保存
注:
1)Web服务器A和备份服务器B的备份目录设置为/backup
2)需要备份文件的相关路径(假定)
a:定时任务配置文件(/var/spool/cron/root)
b:开机自启动配置文件(/etc/rc.local)
c:日常脚本目录(/server/scripts)
d:防火墙配置文件(/etc/sysconfig/iptables)
e:Web服务器站点目录(/var/html/www)
f:Web服务器访问日志路径(/app/logs)
思路:
在web服务器上设置按日日期打包,然后推送到备份服务器上
环境准备:
IP: Name:
192.168.10.131 Backup
192.168.10.132 Web

步骤:

1、数据同步服务器Rsync服务的搭建
2、Web服务器本地打包jio本的制作
3、Backup服务器与Web服务器设置配置定时任务

一、Rsync服务的搭建

1、服务端(Backup服务器):
安装rsync服务

yum install rsync -y

配置rsync

vi /etc/rsyncd.conf  
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.password
log file = /var/log/rsyncd.log

#####################################

[backup]
comment = welcome to  backup!
path = /backup

注:
相关配置文件解释

#全局模块
uid = rsync                          --- 运行进程的用户
gid = rsync                         --- 运行进程的用户组
port = 873                          --- 监听端口
fake super = yes                    --- 无需让rsync以root身份运行,允许存储文件的完整属性
use chroot = no                      --- 关闭假根功能
max connections = 200               --- 最大连接数
timeout = 600                       --- 超时时间
ignore errors                       --- 忽略错误信息
read only = false                   --- 对备份数据可读写
list = false                        --- 不允许查看模块信息
auth users = rsync_backup           --- 定义虚拟用户,作为连接认证用户
secrets file = /etc/rsync.passwd    ---定义rsync服务用户连接认证密码文件路径
#局部模块
[backup]                --- 定义模块信息
comment = commit        --- 模块注释信息
path = /backup          --- 定义接收备份数据目录

创建rsync账户,不允许登录不创建家目录

useradd -M -s /sbin/nologin rsync

创建备份目录(尽可能磁盘空间足够大),授权rsync用户为属主,并且创建虚拟用户和密码文件,并赋予600权限

mkdir /backup
chown -R rsync.rsync /backup/
echo "rsync_backup:1" >/etc/rsync.password    密码设置为1
chmod 600 /etc/rsync.password

启动Rsync服务并且加入开机自启动

systemctl start rsyncd
systemctl enable rsyncd

2、客户端(Web服务器)
安装Rsync服务,设置免密同步密码配置文件并赋予600权限

yum install rsync
echo "1" >/etc/rsync.password
chmod 600 /etc/rsync.password

测试:
将客户端(Web服务器)的/backup目录推送到服务端(Backup服务器)上

rsync -avz /backup/ rsync_backup@192.168.10.131::backup --password-file=/etc/rsync.password

1.png

2.png

二、Web服务器本地打包jio本的制作

注:打包时最好将系统配置文件、站点目录、日志分开打包
jio本中设计到取ip(Centos7没有ifconfig命令安装net-tools即可)我只会用awk取ifconfig中的ip字段

ifconfig eno16777736|awk -F '[ :]+' 'NR==2 {print $3}' (eno16777736为网卡名称)

jio本如下,胖友可以根据自己的需要更改
3.png

#!/bin/bash
IP=$(ifconfig eno16777736|awk -F '[ :]+' 'NR==2 {print $3}')
Path="/backup/$IP"
[ ! -d $Path ] && mkdir $Path -p
#Backup
tar zcPf $Path/www_$(date +%F).tar.gz /var/html/www/
tar zcPf $Path/conf_$(date +%F).tar.gz /var/spool/cron/root /etc/rc.local /etc/sysconfig/iptables /server/scripts
tar zcPf $Path/logs_$(date +%F).tar.gz /app/logs/
#To_back_server
rsync -avz /backup/ rsync_backup@192.168.10.131::backup --password-file=/etc/rsync.password
#Delete_7_Days
find /backup -type f -name "*.tar.gz" -mtime +7|xargs rm -f

效果:
4.png

3、Backup服务器与Web服务器设置配置定时任务

Web服务器上添加计划任务

00 00 * * * /bin/sh /server/scripts/backup.sh &>/dev/null

Backup服务器上创建jio本并且添加计划任务

vim /server/scripts/del.sh
/bin/find /backup -type f -name "*.tar.gz" -mtime +180|xargs rm -f
00 00 * * * /bin/sh /server/scripts/del.sh >/dev/null 2>&1

注:
du -sh /backup/* >/tmp/bak.log (对比大小可以查看每日是否完成相关任务)

所有原创文章采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。
您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。
本站部分内容收集于互联网,如果有侵权内容、不妥之处,请联系我们删除。敬请谅解!

仅有一条评论

添加新评论

  公告

我把那梦再给接上,看看后边啥情况。
--- updated on

  关于博主

你有你的诗和远方,我有我的腿和裤裆。没有洁癖的处女座不是一个好的处女座,想在乱世中寻找一个安静的角落静静地做一些分享,不断学习,很喜欢《士兵突击里》的军事、外语双学士,光电硕士,空军少校-吴哲的口头禅:平常心。但在生活中大都做不到......

  近期评论

  分类目录

生命要得到丰盛的收获,必需阳光;同时,也需要“雨”的浇灌。

人生应该树立目标,否则你的精力会白白浪费。

山涧的泉水经过一路曲折,才唱出一支美妙的歌。

如若不是为了一个人,谁肯枯守一座城。城市和爱情,总是有着这样那样的关系。我们会因为一个人,去到那座城,因为那是一座爱的城;我们也会因为一个人,离开一座城,那是一座绝望的伤城。

常求有利别人,不求有利自己。