linux定时删除N天前的文件(文件夹)

linux定时删除N天前的文件(文件夹),第1张

磁盘只有22T容量,为了避免爆盘,业务需要定时清除数据,根据网上的资料总结了一下设置方法:

可以使用find命令

另外的方法大同小异:

可以吧这个命令写到脚本里,

cleandata.sh

find /tmp -mtime +30 -type f -name "*" -exec rm -rf {}

配置可执行

chmod u+x ./cleandata.sh

配置到crontab

crontab -e

0 0 * * * /home/username/cleandata.sh >/dev/null 2>&1

每天零点自动执行

其中:

第一个 号表示时间中的 分钟 取值范围:0-59

第二个 号表示时间中的 小时 取值范围:0-23

第三个 号表示一个月中的第几天,取值范围:1-31

第四个 号表示一年中的第几个月,取值范围:1-12

第五个*号表示一个星期中的第几天,以星期天开始依次的取值为0~7,0、7都表示星期天

需要根据时间删除这个目录下的文件,/home/lifeccp/dicom/studies,清理掉20天之前的无效数据。

可以使用下面一条命令去完成:

1

find /home/lifeccp/dicom/studies -mtime +21 -name "*.*" -exec rm -Rf {} \

这个是根据时间删除。

下面简要解释一下,这句shell命令:

1

find /home/lifeccp/dicom/studies -mtime +21 -name "*.*" -exec rm -Rf {} \

/home/lifeccp/dicom/studies :准备要进行清理的任意目录

-mtime:标准语句写法

+10:查找10天前的文件,这里用数字代表天数,+30表示查找30天前的文件

"*.*":希望查找的数据类型,"*.jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件

-exec:固定写法

rm -rf:强制删除文件,包括目录

{} \:固定写法,一对大括号+空格+/+

当然也可以根据文件名、根据大小,根据其他不同条件过滤删除,或者修改等,可以考虑sort等命令结合使用。

find 命令可以完成这一需求,比如删除3天前的所有以“.log”结尾的文件:

find /文件路径 -name "*.log" -mtime +2 -exec rm {} \

说明:

1. 文件路径是目标文件所在路径;

2. -name 设定目标文件名,建议采用,否则可能误删其他文件;

3. -ctime 文件最后一次修改时间,后面只能用整数,单位为天,同时,还有atime,mtime,amin,cmin,mmin等时间参数可选,具体请查看帮助;

4. 时间说明如下图(随手画的,大概是这个意思),所以删除三天前的文件要用+2

5. -exec 表示需要执行的命令,{}代表find找到的内容,"\"是固定写法表示结束-exec,

所以例子的"-exec rm {} \" 就表示对find找到的符合条件的文件执行删除 *** 作


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/9002250.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-23
下一篇 2023-04-23

发表评论

登录后才能评论

评论列表(0条)

保存