我愚蠢地创建了一个相当深的树(深度为 4 个文件夹),其中的叶子文件夹包含大量较小的文件(超过 100 万个文件,大小约为 200kb 到 1mb)。总计文件数量超过 80 GB。这是在 Hetzner 内部运行的 Ubuntu Server 14.04 框的 /tmp/ 目录中创建的(可能与想出连接它的方法有关)。
从内存中运行“find . | wc -l”需要花费 12 个多小时。
然后我需要重启服务器。这通常不是问题,因为过去几周它已经重启多次,没有出现问题。没有发生任何配置更改,也没有安装其他软件。
但在这种情况下,它不会重新上线。我可以 ping 盒子,但无法 ssh 或连接到任何我期望重新上线的端口。
我怀疑问题在于启动时挂载和清除 tmp 的脚本 /etc/init/mounted-tmp.conf 难以清除文件,导致盒子卡在 init 启动阶段。
我不认为有什么方法可以加快这个过程?我知道如果我能以某种方式禁用 tmp clean,我就可以使用 rsync 技巧来清理文件夹,但我甚至不知道如何做到这一点。
答案1
找到了解决方案。
使用 hetzer 提供的救援系统启动机器http://wiki.hetzner.de/index.php/Hetzner_Rescue-System/en
然后挂载文件系统并使用此处的提示https://unix.stackexchange.com/questions/37329/efficiently-delete-large-directory-containing-thousands-of-files如何更有效地删除文件。
重新启动后现在一切正常。
答案2
我看到你已经回答了你自己的问题,但是这是我的看法。
那么启动到单用户模式怎么样?您有权访问 grub 吗?启动时,编辑启动参数以包含“单用户”选项,然后直接启动到 root 命令提示符。从那里您可以清理文件。