为什么在 SFTP 上删除目录需要这么长时间?

为什么在 SFTP 上删除目录需要这么长时间?

我的一个 WordPress 安装最近已迁移,我正尝试删除旧目录,但删除过程花费了 15 分钟以上。它似乎正在删除每个单独的文件。这是正常的吗?它是否可以只删除文件夹并在后台自行运行?相比之下,在 Mac(Unix)上,它需要半秒钟。

答案1

它能只删除文件夹并在后台运行吗?相比之下,在 Mac (Unix) 上它需要半秒钟。

这不仅是 SFTP 问题,也是非本地(又称联网)文件系统问题。当您使用 Mac 或任何操作系统时;只需直接在系统上,您就可以直接访问文件系统。由于文件系统(为了清晰起见,我们简化了它)只是一个带有文件/目录位置指针的小型数据库/索引。因此,当您在本地删除文件或目录时,本地文件系统数据库/索引文件会得到相当快的处理,因为它当然是本地的。

相反,当通过网络协议(例如 SFTP)远程访问文件系统时,您无法直接访问文件系统。因此,如果您必须通过网络连接删除每个文件/目录,则首先网络连接需要从远程文件系统获取文件/目录列表。然后,当程序获取该列表时,它将运行远程操作以删除文件。这种方法效率很低,这就是为什么始终首选某种形式的直接文件系统访问。

也就是说,如果你有一个 SFTP 账户,你应该也可以访问 SSH,因为 SFTP 连接通常只是作为 SSH 子系统进行管理。因此,如果您急切地等待文件/目录被删除,只需通过 SSH 登录并对相关rm -rf文件/目录运行命令即可。

答案2

通常,如果您有 sftp 访问权限,那么您也会有 ssh 访问权限,并且您可以使用它来执行远程命令。因此,要递归删除目录结构,您可以使用 rm 命令的 -r 参数。即

ssh [email protected] "rm -rf /home/user/directory" 

使用此命令时要非常小心,并确保要删除的目录 100% 正确。您还可以通过执行此操作列出目录的内容以确保正确。

ssh [email protected] "ls /home/user/directory" 

答案3

安全文件传输协议不提供对操作系统 API 的直接访问。

这基本就意味着“不”。

如果您有 shell 访问权限,通过 SSH 删除可能会更快。

相关内容