shell 备份日志 每三天备份一次

crontab实现不了每隔多少天备份 需要每天定时跑脚本,自己判断是否执行备份
 
#!/bin/bash  


day=$(date +%d); #当前天数 
scripttime=$(date "+%Y-%m-%d %H:%M:%S"); #脚本运行时间记录
start=$(date +%s) #开始执行的时间戳
#判断当前天数是哪天 如果符合备份天数 就执行备份
if [[ $day = 03 ]] || [[ $day = 06 ]] || [[ $day = 09 ]] || [[ $day = 12 ]] || [[ $day = 15 ]] || [[ $day = 18 ]] || [[ $day = 21 ]] || [[ $day = 24 ]] || [[ $day = 27 ]] || [[ $day = 30 ]];
then
 #两种删除方式
 # 1.简单粗暴直接删除带_文件,不利于多次备份数据保留
 cd /data/logs/nginx/xjj/ && rm -rf access_* && rm -rf error_*    #删除之前备份文件
 # 2.通过find命令 找出匹配到的access_* 然后多少分钟前的数据并且执行-exec删掉 更多方式百度find命令详情
 find /data/logs/nginx/xjj/  -mmin +1 -name  access_* -exec  rm -rf {} \;

 date=$(date +%Y-%m-%d) #备份时间文件名
 cp /data/logs/nginx/xjj/access.log /data/logs/nginx/xjj/access_$date.log  #执行备份 变量后面拼接方式 /data/logs/nginx/xjj/access_$date".log"
 true > /data/logs/nginx/xjj/access.log #备份完清空日志文件内容
 cp /data/logs/nginx/xjj/error.log /data/logs/nginx/xjj/error_$date.log
 true > /data/logs/nginx/xjj/error.log

 end=$(date +%s) #结束执行的时间戳
 difference=$(( end - start ))
 echo  $scripttime'  exectime:'$difference>>/data/logs/nginx/xjj/run.log #输出脚本备份执行时间 和 脚本执行时间日志 >> 是追加

fi

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值