linux删除超过指定天数的文件

场景

现在流行的云服务器自身所附带的硬盘大小是小的,如阿里云是按大小增量收费。不过通常我们也是将程序代码部署到云服务器作为一个应用服务器,也不会将云服务器当成一个文件服务器来用。
这就有一个问题,我们的日志文件,该如何保存。有些访问频繁的接口/页面很快就会将自身的磁盘给填充满。如何解决这种问题,又保证日志文件不丢失?网上一搜就会有很多解决方案。
以前见过有人将日志文件定期同步到dropbox,腾讯的微云网盘号称T级别。题外话了,本文主要介绍,如何删除已经同步过的旧文件。

如何定位旧文件

find ./ -mtime +30 -name "*.gz" | xargs ls -ltrh

上条命令主要功能是查询当前目录下时间超过30天.gz结束所有文件名,并将其信息打印出来。关于find -mtime的详细用法,可以百度下。

如:我们需要查找出nginx日志目录下,超过30天的.gz扩展名的所有文件
查找要删除的文件

对比一下/var/log/nginx下所有文件,可以发现上条命令的确把30天以内的文件都过滤了。
所有文件

删除文件

find ./ -mtime +30 -name "*.gz" | [sudo] xargs rm -f

根据权限情况,选择是否需要sudo

发表评论

电子邮件地址不会被公开。 必填项已用*标注