2023年8月3日发(作者:)

linux⽇志压缩及清理,⽇志⽂件定期压缩清除对于⽇志, logback⽀持滚动压缩⽂件和保留⼀定时间的历史⽂件, 但是不能保证留存最近七天的 .log ⽂件, 并对最近30天的log⽂件进⾏压缩处理, 所以这⾥就通过shell命令和crontab来实现⽇志⽂件的定期压缩清除⾸先我们的⽇志⽂件命名规则是 *.%d{yyyy-MM-dd}.log, 通过docker挂载到本地⽬录集中保存, 规律是 /data/logs/*/*.log 其中logs下为每个服务的⽬录#!/bin/bashfunction tarOrClear() {point=`date -d '-7 day' +%s`point2=`date -d '-30 day' +%s`root=$1dirs=`ls -F | grep /$`for i in $dirs; doecho "========= cd $root/$i"cd $root/$ifiles=`ls`for fileName in $files; doprefix=${fileName%%.*}day=$( expr "$fileName" : '.*([0-9]{4}-[0-9]{2}-[0-9]{2}).*' )if [[ $day != "" ]];thendayTime=`date -d $day +%s`# 30天以外的⽇志直接删除if [[ $dayTime -lt $point2 ]];thenecho "rm $fileName"rm $fileName# 7天以外的⽇志压缩, 删除原log⽂件elif [[ $dayTime -lt $point ]];thenif [[ $fileName == *.log ]] && [[ ! -a $prefix.$ ]];thenecho "tar -czf $prefix.$ $fileName --remove-files"tar -czf $prefix.$ $fileName --remove-filesfififidonedone}if [[ $# == 1 ]];thentarOrClear $1elseecho "请选定⽇志⽂件根⽬录, ⽇志⽂件位于 根⽬录/*/*.log"ficrontab定时任务crontab -e 进⼊定时任务编辑增加⼀⾏0 1 * * * (sh /data/logs/ /data/logs) > /data/logs/保存退出crontab -l 查看定时任务列表是否更新这样在每天01:00, 服务器会⾃动执⾏ 对 /data/logs/*/*.log 的⽇志⽂件进⾏压缩和清理

2023年8月3日发(作者:)

linux⽇志压缩及清理,⽇志⽂件定期压缩清除对于⽇志, logback⽀持滚动压缩⽂件和保留⼀定时间的历史⽂件, 但是不能保证留存最近七天的 .log ⽂件, 并对最近30天的log⽂件进⾏压缩处理, 所以这⾥就通过shell命令和crontab来实现⽇志⽂件的定期压缩清除⾸先我们的⽇志⽂件命名规则是 *.%d{yyyy-MM-dd}.log, 通过docker挂载到本地⽬录集中保存, 规律是 /data/logs/*/*.log 其中logs下为每个服务的⽬录#!/bin/bashfunction tarOrClear() {point=`date -d '-7 day' +%s`point2=`date -d '-30 day' +%s`root=$1dirs=`ls -F | grep /$`for i in $dirs; doecho "========= cd $root/$i"cd $root/$ifiles=`ls`for fileName in $files; doprefix=${fileName%%.*}day=$( expr "$fileName" : '.*([0-9]{4}-[0-9]{2}-[0-9]{2}).*' )if [[ $day != "" ]];thendayTime=`date -d $day +%s`# 30天以外的⽇志直接删除if [[ $dayTime -lt $point2 ]];thenecho "rm $fileName"rm $fileName# 7天以外的⽇志压缩, 删除原log⽂件elif [[ $dayTime -lt $point ]];thenif [[ $fileName == *.log ]] && [[ ! -a $prefix.$ ]];thenecho "tar -czf $prefix.$ $fileName --remove-files"tar -czf $prefix.$ $fileName --remove-filesfififidonedone}if [[ $# == 1 ]];thentarOrClear $1elseecho "请选定⽇志⽂件根⽬录, ⽇志⽂件位于 根⽬录/*/*.log"ficrontab定时任务crontab -e 进⼊定时任务编辑增加⼀⾏0 1 * * * (sh /data/logs/ /data/logs) > /data/logs/保存退出crontab -l 查看定时任务列表是否更新这样在每天01:00, 服务器会⾃动执⾏ 对 /data/logs/*/*.log 的⽇志⽂件进⾏压缩和清理