【问题标题】:How to automatically delete thousands of folders from the public_html folder?如何从 public_html 文件夹中自动删除数千个文件夹?
【发布时间】:2016-08-22 05:56:26
【问题描述】:

我的一个朋友让我帮忙清理她的 cPanel 帐户,因为它感染了恶意软件。我登录到 cPanel,几分钟后内置文件管理器崩溃了,因为这个恶意软件创建了 100.000 个文件夹,它甚至无法处理它。其中一些是空的,其他的则包含一些恶意 PHP 文件。这些文件夹名称只是数字(例如:1979190)。我试图通过 FTP 删除它们,但这不是一个选择。我的 FTP 客户端一次只能显示 10.000 个文件夹。我试图删除那些,但 2 小时后它仍在删除具有第一个数字序列 (1******) 的文件夹,最后一个文件夹以数字 9 开头。

很遗憾,此帐户没有 SSH 访问权限。我也联系了支持人员,但他们无济于事(他们希望我们支付 100 美元才能运行单个 shell 命令...)

所以我的问题是:从 public_html 目录中删除所有这些文件夹的最佳方法是什么?是否有可以提供帮助的 PHP 脚本?也许可以删除文件夹名称只是数字的所有文件夹?

任何想法都会有所帮助!提前谢谢!

【问题讨论】:

  • 使用 rmdir() php 函数删除文件夹。 unlink() 删除文件。
  • 在 PHP 文件中,您可以尝试exec('rm -rf /path/to/public_html/1*');,它将删除以 1 开头的目录。然后执行 2* 等。这将删除所有内容。
  • 我也有这个想法,但我很确定 shell_exec 在服务器上被禁用(它来自 Hostgator)。但我很快就会试一试。如果我能用这个就好了。
  • 你拯救了这一天!我能够删除这些文件夹。这是我第一次因为易受攻击的服务器而感到高兴。非常感谢!

标签: php ftp cpanel


【解决方案1】:

使用这个脚本。它遍历嵌套目录并将它们全部删除。

<?php
  function rrmdir($dir) {
  if (is_dir($dir)) {
    $objects = scandir($dir);
    foreach ($objects as $object) {
      if ($object != "." && $object != "..") {
        if (filetype($dir."/".$object) == "dir") 
           rrmdir($dir."/".$object); 
        else unlink   ($dir."/".$object);
      }
    }
    reset($objects);
    rmdir($dir);
  }
 }
?>

【讨论】:

  • 我不确定这是不是我需要的。目录中没有更多的目录,只有数千个 public_html 文件夹中的单个目录。其中大部分是空的,其他的有 1 个,可能有 2 个恶意 PHP 文件。我只是想从 public_html 中删除 100.000+ 个以数字命名的目录,但保持站点的文件和文件夹完好无损很重要。这是一个 WordPress 网站。不幸的是,我无法创建备份,因为帐户上没有更多可用空间,所以在开始使用脚本删除所有内容之前我必须小心。
  • 此脚本适用于数百万个文件 - 如果您想要数十亿个文件。如果您不想删除某些文件夹,只需将它们添加到if 条件即可。
猜你喜欢
  • 2015-01-05
  • 2020-11-27
  • 1970-01-01
  • 2012-03-06
  • 2013-06-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多