首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >批量删除大量文件

批量删除大量文件
EN

Stack Overflow用户
提问于 2013-03-14 14:01:48
回答 2查看 537关注 0票数 6

每天用户上传超过一个月的文件都会从服务器上删除。用户上传按日存储到目录中(如/var/www/media/2013-03-13),因此很容易识别需要删除的文件/目录。

问题:一次删除10万个文件会使服务器没有响应,需要很长时间。(Ubuntu12.04带有2x2TB ext4 SATA3 RAID1软件中的hdd )。目前,PHP正在对命令exec执行find /path/to/dir -maxdepth 1 -name '*' -delete

如何分割删除所需的文件?在这些大型目录上执行ls将花费很长时间。

解决方案不需要在PHP中。它甚至不需要将文件拆分成更小的批。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-14 14:09:09

  1. 查找您想要保存的日子的目录。
  2. 找到所有日子的目录
  3. 从2中移除1。
  4. rm -rf你从3得到的目录。

我不确定这是否比您的方法更快,但它避免显式列出目录中的所有文件。

票数 2
EN

Stack Overflow用户

发布于 2013-03-14 14:07:40

诀窍不是读取所有文件,而是使用readdir逐个读取它们。有关Perl解决方案,请参见Perl到拯救:删除一个大目录的案例研究

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15411436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档