我正在寻找一些解决方案来删除或列出在我们的网络存储上下载的所有电影。我们的可用空间不足,我注意到很多人开始下载电影和音乐,然后将其存储在网络驱动器上。有没有比编写一个在 cron 中运行并通过邮件向我发送所有大于 500MB 的文件(例如)的脚本更好的解决方案?
答案1
最好的解决方案是:
- 升级您的存储空间,让您拥有更多空间。
或者:
- 与人们交谈并让他们停止将内容放在磁盘上而不是删除它们。
或者,如果 1 不是一个选项并且 2 失败:
- 为每个人设置使用配额并强制执行。然而,这将要求每个人都进行身份验证,但他们应该变得更加有空间意识,因为他们会先于 NAS 系统耗尽空间。
除了这两个选项之外,您还可以使用各种技巧find
来仅列出您真正关心的内容。特别是,您可以匹配特定文件所有者(或除您列出的一组所有者之外的所有所有者)、文件大小和上次修改时间(从技术上讲,您也可以匹配访问时间,但您应该避免这种情况,因为访问时间不可靠)。
扩展注释中的命令,您可以尝试:
find /mnt/storage -regex ".*\.\(mp4\|mov\|avi\|mpg\|mp3\|wav\)" -type f -mtime +28 -exec rm {} \;
另外,这只会触及-type f
超过 28 天的实际文件(该子句不包括目录、符号链接、套接字等)(该-mtime 28
子句执行此操作)。代替该-exec
子句,您可以让它打印结果并自己处理事情(当然,您可以对其进行微调以忽略“工作”文件,然后不必处理它,直到您更新构成“工作”文件)。