阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

基于Linux脚本,对日志进行定时压缩备份

97次阅读
没有评论

共计 1653 个字符,预计需要花费 5 分钟才能阅读完成。

导读 当今天系统再次报警磁盘不足时,决定彻底解决该问题。解决的方案也很简单,基于 Linux 写一个简单的脚本,对日志进行定时压缩备份。
背景

系统中安装了前置机服务,该服务由银行提供。前置机日志打印的非常详细,同时并未进行压缩处理。这导致的直接后果就是,每天会有 5G 左右的日志产生。过不了多久就需要手动压缩备份一次。

当今天系统再次报警磁盘不足时,决定彻底解决该问题。解决的方案也很简单,基于 Linux 写一个简单的脚本,对日志进行定时压缩备份。大家如果在实践中遇到类似的问题,可以直接基于下面的脚本进行修改、丰富使用。

具体操作
执行脚本编写

首先,创建一个执行日志压缩、备份和删除的脚本,命名 backup.sh,并赋予可执行权限,脚本内容如下:

#!/bin/bash

cd /log/
echo '开始压缩...'
tar -czvf /log/bak/trade.log.`date -d yesterday +%F`.tar.gz trade.log.`date -d yesterday +%F`
echo '压缩完毕..., 执行删除'
rm -rf trade.log.`date -d yesterday +%F`
echo '删除完毕.'

在上述脚本中,先通过 cd​命令进入目标目录,在执行命令中会通过 echo 打印一些日志信息,这个主要用于进行调试。

执行 tar -czvf 命令,进行日志的压缩。命令后面第一个参数为压缩之后的文件的名称及存储路径,这里放到 bak 目录下,第二个参数为待压缩的日志。

我们重点来介绍一下文件名称中 date -d yesterday +%F​的含义。在 Linux 中,date +”%F” 能输出系统的当前日期:

$ date +"%F"
2022-08-09

命令中,date 命令是输入日期,后面部分用于格式化。

但这都是打印出系统的当前时间,如果要获取相对当前时间的某个时间,需要通过 - d 参数来实现。

$ date -d yesterday +%F
2022-08-08

这里就获得了前一天的日期了。当然,也可以输出后一天的时间,比如:

$ date -d"yesterday" +"%F %H:%M:%S"
2022-08-08 21:36:15

在理解了如何获取系统日期之后,上面的脚本就比较好理解了。

先通过执行 tar -czvf​命令,进行日志的压缩,压缩文件直接存放在 bak 目录,压缩完毕之后,通过 rm -rf 命令对日志进行删除。

在完成上述编辑之后,可以直接执行该脚本,验证一下是否正确,然后就可以通过定时任务来进行配置了。

定时任务执行

在完成了脚本的编写并赋予可执行权限之后,就需要基于 crontab 来进行定时任务的配置。

执行 crontab - e 打开定时任务文件编辑界面,输入如下信息:

30 2 * * * /log/backup.sh

上面的指令是在说:每天 2 点 30 分执行 /log/backup.sh 脚本。编辑完成,保持退出。那么在每天凌晨 2 点 30 分,便会进行脚本的执行。

这里再拓展一下,上述 crontab 中对应的表达式含义如下:

minute hour day month week command 顺序:分 时 日 月 周 命令 

根据需要,你可以调整定时任务的执行时间点或周期。

关于 crontab 这里再补充一下它的常见指令,方便大家使用:

crontab -e // 编辑
crontab -l // 查看

service crond status

service crond start// 启动服务

service crond stop// 关闭服务

service crond restart// 重启服务

service crond reload // 重新载入配置

cd /var/spool/mail/ 用户文件 查看执行情况 
小结

至此,关于 Linux 下自动日志压缩备份脚本已经完成。虽然非常简单,但却可以极大地释放人力资源,再也不用手动清理了。当然,在实践中,场景不同使用的脚本可能更会更复杂,但基本原理是一致的,大家可根据具体情况来丰富脚本的功能。

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计1653字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中