cron操作每小时保存数据库文件,并根据年,月,日和小时分配文件名
/$(date +%m)/$(date +%y%m%d%H)_thedb.sql
这会导致存档膨胀,目标是将当天的最后一个文件(即,删除所有这些比15050923*
少)在单独的cron操作中。
什么是实现这一目标的有效方法?
在您以复杂的bash字符串替换开始之前,我建议您尝试在文件日期之后。find
可以为您提供帮助。
例如,要删除超过5天的目录中的所有文件,您可以尝试这样的事情:
find <DIR> -mtime +5 -exec rm {} ;
现在,如果<DIR>
中有子目录,您可能还需要包括选项-type f
以将发现限制为文件,而-maxdepth 1
则不搜索子目录。
如果您有一个文件并想删除比这更古老的所有内容,则可以稍微修改以下内容:
find <DIR> -not -newer <FILE> -not -name <FILE> -exec rm {} ;
我根本不知道为什么find
中没有-older
搜索词,这似乎很明显。
警告:我强烈建议您先删除-exec
和所有之后的所有内容,以检查是否可以删除其发现的文件。