在 Linux 中删除非空目录的最快方法

在 Linux 中删除非空目录的最快方法

我使用命令rm -rf 目录但我偶然发现了以下文章:文章 这是否意味着 rsynch 至空文件夹是最快的方法?rsync -a –删除空/a为什么会这样?还有其他更快的方法来删除非空文件夹吗?

关于此的另一篇有趣的文章第二条

答案1

我发现最快和最节省内存的解决方案是在包含数百万个文件的目录中使用此命令:

ls -f1 | xargs rm

解释

因为ls -f1不会对目录内容进行排序,所以它会立即开始输出。该rm命令只接受一个参数:来自第一个命令的实际文件名。这是从 Magento 网店的会话目录中删除 3,000,000 个文件的唯一解决方案。该服务器在只有 2GB RAM 的虚拟机上运行 - 没有其他可能删除这些文件。

答案2

通过快速浏览 GNU Coreutils 8.21 和 rsync 3.0.1 源代码并查看它们对 strace 的操作,GNU Coreutils 中的 rm 在执行相同操作时似乎比 rsync 调用 malloc() 的次数多得多。不过,我怀疑这是否完全解释了速度差异,但这很可能是部分原因。

相关内容