两种方法:
1. 在一个目录中保留最近三个月的文件,三个月前的文件自动删除。
find /email/v2_bak -mtime +92 -type f -name *.mail[12] -exec rm -rf {} \;/email/v1_bak –设置查找的目录;
-mtime +92 –设置时间为91天前;
-type f –设置查找的类型为文件;
-name *.mail[12] –设置文件名称中包含mail1或者mail2;
-exec rm -f –查找完毕后执行删除操作;
将此命令写入crontab后即可自动完成查找并删除的工作了。
2. 或者用:find . -ctime +40 -type f | xargs rm -rf
简名 | 全名 | 中文名 | 含义 |
atime | access time | 访问时间 | 文件中的数据库最后被访问的时间 |
mtime | modify time | 修改时间 | 文件内容被修改的最后时间 |
ctime | change time | 变化时间 | 文件的元数据发生变化。比如权限,所有者等 |
1、编写清理日志脚本clear.sh
#!/bin/sh
find /opt/bak -mtime +6 -name “*.log” -exec rm {} \;
find /opt/bak -mtime +6 -name “*.dmp” -exec rm {} \;
2、给脚本授权
chmod +x clear.sh
3、加入定时执行任务
vi /etc/crontab
在最后加入:00 2 * * * root /opt/sh/clear.sh
4、重启crontab服务
service crond restart
删除目录举例
find /volume1/homes/admin/用友备份/ZT001/ -mtime +15 -type d -exec rm -rf {} \;
近期在业务中,给定的磁盘只有22T容量,为了避免爆盘,业务需要定时清除数据,根据网上的资料总结了一下设置方法:可以使用find命令
find 路径 -mtime +天数 -type f -name “文件名” -exec rm -rf {} ;
find /tmp -mtime +30 -type f -name "*" -exec rm -rf {} \;
/tmp --设置查找的目录;
-mtime +30 --设置修改时间为30天前;
-type f --设置查找的类型为文件;其中f为文件,d则为文件夹
-name "*" --设置文件名称,可以使用通配符;
-exec rm -rf --查找完毕后执行删除操作;
{} \; --固定写法
另外的方法大同小异:
[hadoop@oyhadoop021 nokia_temp]$#find /tmp -mtime +30 -type f | xargs rm -rf
可以吧这个命令写到脚本里,
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都表示星期天