我们有一个缓存文件夹,它意外地变得太大,以至于破坏了服务器。我们的服务器上有 8 GB 的 RAM,当我运行简单的rm
命令删除其中的所有文件时,会消耗所有 RAM,而且 5 小时后仍然无法删除它。
因此,我们尝试使用find
,但运行 12 小时后也失败了。现在,从过去 24 小时开始,find
withperl
语句一直在运行,但文件夹仍然没有被删除,实际上没有删除任何文件。
当我们ls
进入父文件夹时,它会显示文件夹大小1GB
,我只是想知道有多少百万个文件。
所以,我的问题是,我们有没有办法可以删除文件而不列出它们,所以它只是删除文件夹或其中的文件而不列出列表(也就是说getdir()
不像系统调用那样调用)
我现在确实正在考虑格式化服务器以摆脱它。
编辑:
我已经使用find
过-delete
-exec rm -f {}
编辑2:
基于本文我们现在正在运行 perl 命令(该命令仍然运行了大约 24 多个小时),但是在我们可见的文件夹大小方面没有任何进展。
答案1
一种选择是使用 开关-delete
。find
我知道您说您已经使用过find
,但没有具体说明您如何使用它。通常,这将尝试枚举每个文件,但我相信使用以下命令它应该会在找到它们时删除它们:
find . -type f -print -delete
-print
(如果您不想要输出,当然可以将其删除cd
到您的文件夹或输入正确的文件夹名称)
至少值得一试。
编辑-这是来自@的另一个问题的建议unix
mkdir empty_dir
rsync -a --delete empty_dir/ yourdirectory/
答案2
尝试了各种建议后,对我有用的建议是备份我需要的文件,格式化挂载并恢复它们。当然,这取决于您要备份的文件有多大。但是,我们只能假设您正在备份文件系统 - 在这种情况下,您只需格式化和恢复即可。