磁盘只有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天之前的无效数据。
可以使用下面一条命令去完成:
1find /home/lifeccp/dicom/studies -mtime +21 -name "*.*" -exec rm -Rf {} \
这个是根据时间删除。
下面简要解释一下,这句shell命令:
1find /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找到的符合条件的文件执行删除 *** 作
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)