我想创build一个最大大小的目录,比方说500MB。 该目录可能包含任何数量和深度的子目录。
当超出目录的最大大小限制时,我想清除上次访问的文件的目录,直到它回到大小限制以下。 理想情况下,在清除操作期间清空空目录。
这并不需要实时发生 – 也就是说,如果目录越过最大值,只要定期清除,就可以。
我已经探索了一些select。 我可以将文件夹挂载为单独的文件系统,然后运行quota ,但这对智能清除旧文件没有帮助。 为了这个目的,我使用logrotate来查看(错误),但是它不能很好地处理无限recursion,也没有从最早的文件开始清除的function。
如果没有更好的build议,我的计划是刷新我的bash技能,并写一个脚本,通过du -s检查目录大小,如果发现目录大于最大值,则recursion查找所有文件该目录按照最早的访问date对它们进行sorting,然后逐个删除它们,检查目录大小并在目录返回到目标下时退出。 这个脚本可以作为一个cron工作来运行。
我只是想知道如果我忽视了现有的工具或策略,更容易处理这个。
(如果你好奇我为什么要问,我使用s3fs在本地文件系统上挂载Amazon S3存储桶,而且我正在调查use_cache选项来维护本地caching,因为S3存储桶可能会变得很大,我需要一种智能pipe理这个caching的方法。)
编辑: tmpreaper是我刚刚发现的另一个工具,这是非常接近的工作。 它似乎只能根据访问时间(不是大小限制)清除文件夹,但在所有其他方面似乎是一个不错的select。
所有你需要的是使用这里发布的脚本( http://ubuntuforums.org/showthread.php?t=698649 )。 您只需要定义$ TrashPath。