用shell脚本完成批量压缩日志文件

机器上每天都会生成一个相应的日志文件会以日期结尾,现在想要用一个shell脚本完成,对2021年一月的所有日志进行压缩,压缩成一个包,二月的所有日志压成一个包,三月,四月,,,以此类推,有哪位大佬帮忙指点指点怎么写这个shell脚本

简单直接,试一下:

#!/bin/bash

for i in ${seq 1 12}
do  
  if [ $i -lt 10 ];then
    i='0'${i}
  fi
  tar zcvf tar_log_file_2021${i}.tar log_file_2021${i}*
done

根据你服务器中的具体情况,可以再对这个shell进行优化,比如传入变量作为年份和文件名前缀 $0 和 $1 ,更加的灵活。

希望可以帮助到你。

假设你的每日生成日志所在的文件夹目录名叫 log,该目录下只有相关日志文件且每天生成一个文件。
那么可以采用以下思路。
1、写一个脚本叫tar_log.sh的脚本
2、在定时任务中指定该脚本为每月1日凌晨时间段运行。

设该日志log文件夹在users/demo/目录下,且备份的文件放于users/demo/log_tar/目录下
则tar_log.sh的脚本内容如下

date=$(date '+%Y-m%-%d')
tar -zcf /users/demo/log_tar/$date".tar.gz"  /users/demo/log

dir=/users/demo/log
for file in $dir/* 
do
     rm -rf $file
done

tar cvf 202101.tar 202101

每天的日志文件具体命名是怎样的,你只是说是日期结尾也不知道具体格式是怎样

应用程序已经做好日志分割,根据需求程序如果能按月份存档日志就更方便了;
只需要使用命令压缩日志并删除日志,使用定时任务执行脚本就可以