机器上每天都会生成一个相应的日志文件会以日期结尾,现在想要用一个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
每天的日志文件具体命名是怎样的,你只是说是日期结尾也不知道具体格式是怎样
应用程序已经做好日志分割,根据需求程序如果能按月份存档日志就更方便了;
只需要使用命令压缩日志并删除日志,使用定时任务执行脚本就可以