使用linux-shell脚本清理数据文件和日志文件

本文将介绍使用调用linux-shell公共方法,实现指定天数之前文件和文件夹清理、以及制定文件大小的文件清理功能。
主要涉及四个方面:
1、指定日期前的文件夹清理
2、指定日期前的文件清理
3、文件超过一定大小进行自动清理,tomcat中catalina.out文件
4、tomcat日志文件清理

1、指定日期前的文件夹清理

该方法是实现对指定日期前的文件夹清理功能,比如想清理今天之前10天的所有文件夹数据,只需要调用方法,输入要清理的文件的路径和要保留的天数即可,如:fClearFold /home/vlog/test 10

#!/bin/sh
currDate=`date +%Y-%m-%d`
currDate8=${currDate//-/}
##!@NOTE:数据文件夹清理,适合删除日期文件夹是八位的,如20230808
##!@IN: 1 -> 需要删除的源文件路径
##!@IN: 2 -> 保留天数
##!@SAMPLE: fClearFold sourceDir saveDays
function fClearFold
{
	local sourceDir=$1
	local saveDays=$2
	dateFoldArr=`ls $sourceDir` 
	for dateFold in ${dateFoldArr[*]}
	do
		#文件夹都是2开头的
		if [[ ${dateFold:0:1} -eq "2" ]];then
			dateCompare=`date -d "$currDate8 - $saveDays day" + %Y%m%d`
			if [ $? -eq 0] [[ $dateFold -le $dateCompare ]];then
				rm -rf $sourceDir/$dateFold 
			fi
		fi		
    done
}
#调用方法清理文件夹,保留30天
fClearFold /home/test/data 30

2、指定日期前的文件清理

该方法是实现对指定日期前的文件清理功能,比如想清理今天之前10天的所有文件数据,只需要调用方法,输入要清理的文件的路径和要保留的天数即可,如:fClearLog /home/vlog/test 10

#!/bin/sh
currDate=`date +%Y-%m-%d`
currDate8=${currDate//-/}
##!@NOTE:数据文件清理
##!@IN: 1 -> 需要删除的源文件路径
##!@IN: 2 -> 保留天数
##!@SAMPLE: fClearLog sourceDir saveDays
function fClearLog 
{
	local sourceDir=$1
	local saveDays=$2
	[ -d $sourceDir ] && cd $sourceDir
	for fileName in `ls`
	do
		dateCompare=`date -d "$currDate8 - $saveDays day" + %Y%m%d`
		#防止匹配出错,需确保倒数12位开始,取8位,为纯数字
		if echo "${fileName:0-12:8} |grep -q "^[0-9]*$" ;then
			#文件都是形如 abcde_test_20230202.txt,倒数第12位开始,选取8位就是20230202
			if [[ ${fileName:0-12:8} -le  $dateCompare ]];then
				rm -rf $sourceDir/$fileName
			fi	
		fi	
	done
}	
#调用方法清理文件即可,保留30天
fClearLog /home/test/data 30

3、文件超过一定大小进行自动清理,tomcat中catalina.out文件

在实际的工作中,可能会定期的清理日志文件或者数据文件,以及某一个特定文件。当它的大小达到一定程度,为了磁盘空间和读写速度,都需要定期迁移和清理。下面就分享一个tomcat中catalina.out文件的定期清理方法。

#!/bin/sh
currDate=`date +%Y-%m-%d`
currDate8=${currDate//-/}
##!@NOTE:文件超过一定大小进行自动清理
##!@IN: 1 -> 文件名
##!@IN: 2 -> 文件大小
##!@SAMPLE: CheckFileSize fileName fileSmallSize
function CheckFileSize
{
	local fileName=$1
	#设置文件的最小值,1024代表1M,524288代表512M,1048576代表1G
	local fileSmallSize=$2
	[[ ! -f $fileName ]] && echo "$fileName Not Found" && exit 1
	if ! echo $fileSmallSize | egrep '^[[:digit:]]+$' &> /dev/null;then
		echo "fileSmallSize  Must Number" && exit 1
	fi
	local fileSize=$(du -s $fileName |awk '{print $1}')
	if [[ $fileSize -gt $fileSmallSize ]];then
		#清空fileName
		> $fileName && exit 1
	fi
}
#调用方法清理文件即可,文件大于100M就清理
CheckFileSize /home/test/data/catalina.out 102400

4、tomcat日志文件清理

tomcat安装完了之后,在/home/vlog/apache-tomcat-9.0.53/logs路径下会自动产生一些日志文件,这些日志文件是以txt和log结尾的日志文件,需要进行清理,只保留最近几天的就行。

#!/bin/sh
currDate=`date +%Y-%m-%d`
currDate8=${currDate//-/}
##!@NOTE:tomcat日志文件清理
##!@IN: 1 -> 需要删除的源文件路径
##!@IN: 2 -> 保留天数
##!@SAMPLE: fClearTomcatLog sourceDir saveDays
function fClearTomcatLog
{
	local sourceDir=$1
	local saveDays=$2
	fileFoldArr=`ls $sourceDir`
	for fileName in ${fileFoldArr[*]}
	do
		if [ "${fileName##*.}"x == "log"x ]||[ "${fileName##*.}"x == "txt"x ];then
			dateCompare=`date -d "$currDate8 - $saveDays day" + %Y%m%d`
			#文件是形如: axcd_2023-10-10.txt
			fileName10=${fileName:0-14:10}
			if [[ ${fileName10//-/} -eq $dateCompare ]];then
				rm -rf $sourceDir/$fileName 
			fi 
		fi	
   done		
}
#调用方法清理文件即可,保留30天
fClearTomcatLog /home/test/data  30

感谢大家的阅读,有更好的或者其他的实现方式,欢迎大家留言交流,谢谢。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaoEchoJava

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值