批量删除大量文件

Nyx*_*nyx 6 php unix linux ubuntu

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

问题:一次删除100,000个文件会使服务器无响应并需要很长时间.(Ubuntu 12.04,软件RAID1中带有2x2TB ext4 SATA3硬盘).目前PHP正在执行exec该命令find /path/to/dir -maxdepth 1 -name '*' -delete.

如何拆分删除所需的文件?ls在那些大目录上执行a 将花费很长时间.

解决方案不必是PHP.它甚至不需要将文件拆分成更小的批次

Osw*_*ald 2

  1. 找到您想要保留的日期的目录
  2. 查找全天的目录
  3. 从 2 中删除 1。
  4. rm -rf您从 3 获得的目录。

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