Linux定时压缩日志
由于项目上每天日志输出量大,服务器空间承受不住每天日志的增量,需要定时将日志文件进行压缩
注意 脚本中&&不可省略
测试脚本时尽量用较大文件进行测试,压缩不会瞬间完成的
压缩完成后将文件解压与源文件对比是否一致
echo "Please wait..." #压缩日志脚本开始
curDay=$(date "+%Y-%m-%d")
echo "${curDay}"
f=`ls /u01/soft/apache-tomcat-*/*/*/ -1 -c` #获取指定文件夹下文件列表 (*处填写日志文件的文件夹位置)
echo "${f}"
cd /u01/soft/apache-tomcat-*/*/*/ #进入到指定文件夹下
day=60 #设置要要压缩多少天前的文件
fail=0
d=`date -d "${day} days ago" +%Y-%m-%d`
echo $d
for name in ${f};do
if[[ "${name}" == "*_${d}.log" ]];then #根据文件名匹配60天前文件名称(*号出填日志文件名称前缀;如log_20230202.log填log)
echo "找到60天前的日志文件 : ${name}, 开始压缩"
tar -zcvf **_${d}.tar.gz **_${d}.log && #一定要加&&符号,否则文件未压缩完就会开始下一步(第一个**填压缩完成后想要的文件名字前缀,第二个**填要压缩的文件名字前缀)
echo "压缩完成" &&
mv **_${d}.tar.gz /u01/soft/apache-tomcat-*/*/*/ && #将压缩完的文件转移到指定目录
rm -f "*_${d}.log" && #删除源文件
((fail++))
fi
done &&
if[[ "${fail}" == "0" ]];then
echo "没有要压缩的文件"、
fi
echo "done"