Rsync备份策略

Rsync备份策略

备份一些代码 或者 配置文件 日志文件…

比如要求每天晚上12点备份日志和代码还有nginx配置文件 而且打包文件只保留7天

数据端

1.先写shell脚本写好

> mkdir /server/rsync/
> cd /server/rsync/
> vim back.sh
# !/bin/sh
# __author__:
ip=39.96.14.149; 
# 1.打包文件
# 2.删除7天前的压缩文件
# 3. 推送到备份服务器

2.先写打包日志和配置文件的命令

> tar zchf /backup/back_$(date +%F).tar.gz /usr/local/nginx/conf   /usr/local/nginx/html /usr/local/nginx/logs &>/dev/null 
 -z # 压缩
 -c # 指定目录
 -h # 不建立符号连接,直接复制该连接所指向的原始文件。
 -f # 指定备份文件。
 $(date +%F) # 指定日志输出格式为 年-月-日
 ## 把nginx 的日志和配置文件还有代码 打包到backup的目录里并且压缩后改名字叫back_后面以日期命名

3.删除7天以前的打包文件

find /backup/ -type f -ctime +7 -name *.tar.gz | xargs rm -rf 
 -type f # 定义类型是普通文件
 -ctime +7 # 查找系统中7*24小时之前被创建文件数据的文件
 -name # 文件名字
 xargs # 把前面查询到的内容给我 我再给他赋予新的命令

4.把文件推到备份服务器

rsync -az /backup/ rsync_backup@152.136.106.241::backup --password-file=/etc/rsync.password

5.把上面那几个写到脚本里面

#!/bin/sh
# __author__:
ip=39.96.14.149
mkdir -p /backup/${ip} &&\
# 1.打包文件
/bin/tar zchf /backup/${ip}/back_$(date +%F).tar.gz /usr/local/nginx/conf   /usr/local/nginx/html /usr/local/nginx/logs &>/dev/null &&\
# 2.删除7天前的压缩文件
/bin/find /backup/ -type f -mtime 7 -name *.tar.gz | xargs rm -rf &&\
# 3. 推送到备份服务器
rsync -az /backup/ rsync_backup@152.136.106.241::backup --password-file=/etc/rsync.password
# &&\的意思是 左边的执行成功后才执行后面的 \ 是换行的意思 
# &>/dev/null 把标准输出信息写进垃圾桶
# &>/dev/null 2>&1 语句含义:
# &>/dev/null : 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。
# 2>&1 :接着,标准错误输出重定向(等同于)标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。

6.写进定时任务 每天晚上12点执行这个脚本

crontab -e
# rsync
00 00 * * * /bin/sh /server/backup/back.sh >/dev/null 2>&1 # 每天00点00分执行这个任务

7.为了保持数据的完整性和安全性 给压缩文件加上指纹(MD5)

find /backup/ -type f -name *.tar.gz | xargs md5sum > /backup/${ip}/back_$(date +%F).md5

8.加入到脚本里面

#!/bin/sh
# __author__:
ip=39.96.14.149
mkdir -p /backup/${ip} &&\
# 1.打包文件
/bin/tar zchf /backup/${ip}/back_$(date +%F).tar.gz /usr/local/nginx/conf   /usr/local/nginx/html /usr/local/nginx/logs &>/dev/null &&\
# 1.1 md5加密保证数据的完整性
/bin/find /backup/ -type f -name *.tar.gz | xargs md5sum > /backup/${ip}/back_$(date +%F).md5 &&\
# 2.删除7天前的压缩文件
/bin/find /backup/ -type f -mtime +7 -name *.tar.gz | xargs rm -rf &&\
# 3. 推送到备份服务器
rsync -az /backup/ rsync_backup@152.136.106.241::backup --password-file=/etc/rsync.password

备份服务端

服务端也就是backup端的备份文件如果不清理会出现问题 所以服务端只保留3个月的备份文件 并且验证推送过来的文件的完整性

1.删除3个月以前的备份文件

find /backup/ -type f -mtime +90 -name *.tar.gz | xargs rm -rf 
find /backup/ -type f -mtime +90 -name *.md5 | xargs rm -rf  

2.先校验如果当天没有备份就生成一个error日志文件

 file=/backup/${ip}/back_$(date +%F).md5
  if [ ! -e ${file} ];then
     /bin/touch /backup/${ip}/$(date +%F)_error.log
     echo "${ip}_$(date +%F) is not rsync" >> /backup/${ip}/$(date +%F)_error.log
      exit
  fi 
  # 上面的意思就是如果这个我文件没有生成 他那肯定就是没有备份成功 如果没有成功给我就生成一个error日志文件

3.校验如果MD5没有区别成功 同样也生成一个error文件

find /backup/ -type f -name "*$(date +%F).md5" | xargs md5sum -c 2>/dev/null | grep FAILED | wc -l
# 上面这个是 如果筛选到了 failed 他就会出现1行 如果没有就说明数据是完整的
# wc -l 统计行数

4.写入脚本

# !/bin/sh                                                                                      
# __author__:
ip=39.96.14.149
# 1.删除3个月以前的备份文件
/bin/find /backup/ -type f -mtime +90 -name *.tar.gz | xargs rm -rf 
/bin/find /backup/ -type f -mtime +90 -name *.md5 | xargs rm -rf  
 
# 2.对当天的文件进行校验 
file=/backup/${ip}/back_$(date +%F).md5
if [ ! -e ${file} ];then
   /bin/touch /backup/${ip}/$(date +%F)_error.log
    echo "${ip}_$(date +%F) is not rsync" >> /backup/${ip}/$(date +%F)_error.log
    exit
fi
error=$(find /backup/ -type f -name "*$(date +%F).md5" | xargs md5sum -c 2>/dev/null | grep FAILED | wc -l)
if [ $error -gt 0 ];then
    /bin/touch /backup/${ip}/$(date +%F)_error.log              
    echo "${ip}_$(date +%F) md5 is FAILED" >> /backup/${ip}/$(date +%F)_error.log
fi

5.写入定时任务

crontab -e
0 7 * * * /server/backup/delete.sh > /dev/null 2>&1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值