最近我错误地创建了一个包含大量文件和子目录的目录。然后我试图通过我的FTP软件(FileZilla)删除目录,但它真的很慢,就像你可以看到的那样,删除每个文件需要2/3秒。
所以我停止了它,并通过SSH和使用rm -rf
命令进行尝试,然后目标目录在一秒钟内被删除。
我的问题是,为什么在FTP上速度这么慢,而在SSH上速度这么快?
非常感谢!
要删除目录树,必须对其进行迭代,检索所有文件和子目录的列表,然后逐个删除。
-
使用remote
rm -rf
命令时,它可以直接访问文件系统,因此速度相对较快。 -
而FTP客户端必须检索文件列表(包括几个FTP命令交换、打开数据通道、列表传输等),然后必须逐个删除文件。每次删除都需要发送FTP命令,等待响应。所以这需要很长时间。
FTP协议中没有"删除整棵树"命令,它与在远程shell上执行的rm -rf
命令等效。