linux shell 脚本 历史文件清理脚本,按天,按月,清理前N天的历史文件,删除指定大小历史文件,历史文件归档清理

不知道大家那有没有要清理的这个事情。需要清理目录历史文件。可能后续也会有很多其他地方需要清理历史文件,可能会用到。

我这两天空闲写了个脚本,清理比较方便,有要进行清理的大量历史文件的话可以用。

 

脚本用到的命令只有linux才有,像solaris等就不支持,所以只能在linux上运行。如果是nas存储的话,可以挂载到一个linux主机上跑脚本清理。

另外,脚本查找文件用的是ls,但是ls也有最大文件的限度(大概10w以内),如果每天文件很多,每天都是10w+的,运行可能提示文件数过多无法ls。

还有,脚本内有个默认的限制,就是清理的文件的创建日期是跟文件名上的时间是相同的,如果是不同的话,是不会清理的,这是为了避免清理错了。


我写了两个版本的清理脚本,一个是直接清理文件的clearfile.sh,一个是把文件按天/月进行归档(归档成文件夹或压缩包形式)clearfile_ar.sh


(一)单纯清理文件使用clearfile.sh

文件名是带有时间戳的文件,类似如下(或其他时间格式,后面描述)


按天/月清理:修改脚本内的CLEAR_TYPE参数,D是天,M是月

如果是按月的话,脚本按你输入的月份进行整月清理,不会看你输入的天的时间

清理指定期间内所有文件

./clearfile.sh/wls/investop/tmp/ 20170515 20170516

清理指定期间内固定大小文件(ls -l显示的大小)

./clearfile.sh /wls/investop/tmp/ 20170515 20170516 40

其他文件日期格式清理

脚本默认(TRUNC_DATE_FLAG参数为N)是清理上面截图这类格式的,没有任何间隔符的文件名。

如果文件名是有其他间隔符的,如*2017_05_16*这种的。


首先需要调整下脚本里的trunc()方法,把标黄的年月日之间的分隔符改成需要的分隔符(按天和按月两种哦)


然后再设置TRUNC_DATE_FLAG参数为Y,来让脚本使用你指定的日期格式清理</

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值