linux下定期备份日志文件
在正式的线上环境 我们可能需要对部分文件进行备份,来避免因为某种原因造成的文件丢失或者问题回顾等,所以我这里写一遍关于日志备份的博客供大家参考,希望能帮助到各位小伙伴,如果有错误的地方欢迎指正,谢谢1. 备份脚本编写说到备份, 我们第一时间想到的就是把旧的文件复制( cp)一份放到新的路径下,然后再改个名字,ok,收工。首先我们要先创建备份脚本,打开xshell,输入touch dumplog.s
在正式的线上环境 我们可能需要对部分文件进行备份,来避免因为某种原因造成的文件丢失或者问题回顾等,所以我这里写一遍关于日志备份的博客供大家参考,希望能帮助到各位小伙伴,如果有错误的地方欢迎指正,谢谢
1. 备份脚本编写
说到备份, 我们第一时间想到的就是把旧的文件复制( cp)一份放到新的路径下,然后再改个名字,ok,收工。
首先我们要先创建备份脚本,打开xshell,输入
touch dumplog.sh
,点击回车键,会在你的当前目录下创建.sh 文件。比如我这里就是 /opt/spring/logs目录下创建的
然后我们 对文件进行编写
vim dumplog.sh
进入 .sh 文件 , 按a进行编写
下面我们来看.sh脚本该如何编写
#!/bin/bash
#保存备份个数,备份31天数据
number=31
#备份保存路径
backup_dir=/root/logbackup
#日期 针对日志的话 我这里是第二天凌晨0点保存前一天的日志文件
dd=`date -d "yesterday" +%Y-%m-%d`
#源文件日志路径
bean_dir=/opt/spring/logs
#如果文件夹不存在则创建
if [ ! -d $backup_dir ];
then
mkdir -p $backup_dir;
fi
#简单写法cp -r /opt/spring/logs/demo.info.$dd.0.log /root/logbackup/backup_log-$dd.log
# 我的源文件名 demo.info.2021-01-01.0.log 这里根据自己的日志文件名称进行修改
cp -r $bean_dir/demo.info.$dd.0.log $backup_dir/backup_log-$dd.log
#写创建备份日志
echo "create $backup_dir/backup_log-$dd.log" >> $backup_dir/log.txt
#找出需要删除的备份
delfile=`ls -l -crt $backup_dir/*.log | awk '{print $9 }' | head -1`
#判断现在的备份数量是否大于$number
count=`ls -l -crt $backup_dir/*.log | awk '{print $9 }' | wc -l`
if [ $count -gt $number ]
then
#删除最早生成的备份,只保留number数量的备份
rm $delfile
#写删除文件日志
echo "delete $delfile" >> $backup_dir/log.txt
fi
编写完成后 , esc + wq 保存并退出。
2. 对脚本进行赋权脚本
chmod 700 /home/dumplog.sh
3. 运行脚本
运行.sh脚本: ./dumplog.sh
发现运行报错:-bash: ./dumplog.sh: /bin/bash^M: bad interpreter: No such file or directory
然后我去网上查到解决办法:https://blog.csdn.net/youzhouliu/article/details/79051516
我这里用他介绍的方法一解决了问题:
方法一:vim a.sh进入a.sh后, 在底部模式下, 执行:set fileformat=unix后执行:x或者:wq保存修改。
然后就可以执行./a.sh运行脚本了。(我亲自试过, 是ok的)
其实这里的步骤是
1、进入编辑:vim dumplog.sh
2、按 esc 后 输入 :set fileformat=unix + 回车
3、保存并退出: :wq
然后就可以执行了
4、是否有备份成功。
去你的备份目录(也就是”backup_dir “ 这个变量)下看是否有复制好的备份文件:
并且log.txt 下有备份文件生成的日志:
5、将Shell脚本添加到计划任务,由crond 执行
首先看一下crond的状态,发现是开着的
然后编辑/etc/crontab这个文件,将shell脚本添加到配置文件中
vim /etc/crontab
这个规则也比较简单
-
-
-
-
- 用户 脚本
-
-
-
*表示一个小时的第几分钟,可以输入0-59
*表示一天的第几个小时,可以输入0-23 *表示一个月的第几天,可以输入1-31 *表示一年的第几个月,可以输入1-12 *表示星期几,可以输入0-6,0或者7表示周日
0 2 * * * 用户 脚本 //表示每天两点执行
0 2 * * 7 用户 脚本 //表示每周日两点执行
0 2 10,20,30 * * 用户 脚本 //表示每周月10号、20号、30号执行
*/1 * * * * 用户 脚本 //每分钟执行一次
0 * * * * 用户 脚本 //表示每天整点执行
然后星期几的那个和与月日感觉不是很搭,还是看自己需要吧
下面试一下,先把备份删了,然后定个时试执行备份脚本
现在是50,定个52看看
finally successful
更多推荐
所有评论(0)