Tim*_*imo 6 ftp bash shell session curl
我正在编写一个shellcript,需要遍历ftp服务器上的所有文件夹和文件(递归).到目前为止,使用cURL一切正常 - 但它很慢,因为cURL为每个命令启动一个新会话.因此,对于500个目录,cURL预先进行500次登录.
有没有人知道,我是否可以使用cURL(这将是我最喜欢的解决方案)保持登录状态,或者我如何在shell脚本中只使用一个会话使用ftp?
我知道如何执行一组ftp命令并检索响应,但对于递归列表,它必须更加动态......
谢谢你的帮助!
只是为了总结到目前为止其他人所说的话。如果您试图编写一个可移植的shell脚本(用作批处理文件),则由于某些FTP服务器可能未实现,因此您需要使用lftp解决方案ls -R
。在以下示例中,只需将123.456.789.100替换为ftp服务器的实际IP地址即可:
$ lftp -c "open 123.456.789.100 && find -l && exit" > listing.txt
Run Code Online (Sandbox Code Playgroud)
请参阅man
lftp 的页面,转到以下find
部分:
递归列出目录(默认为当前目录)中的文件。这可以帮助缺少ls -R支持的服务器。您可以重定向此命令的输出。
但是,如果您有办法确定远程ftp服务器是否实现了对的正确支持ls -lR
,那么更好的(=更快的)解决方案是:
$ echo ls -lR | ftp 123.456.789.100 > listing.txt
Run Code Online (Sandbox Code Playgroud)
仅供参考,如果我执行第一个命令(lftp + find),则需要0m55.384s来检索完整列表,而如果执行第二个命令(ftp + ls-R),则需要0m3.225s。
gho*_*g74 -1
如果您只想创建所有文件和文件夹的列表,ssh
则可以使用。像这样的东西(但请检查文档以了解正确的用法)
$ ssh user@host "ls -R /path"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17290 次 |
最近记录: |