l--*_*''' 13 ftp bash shell sftp curl
我正在使用cURL尝试下载某个目录中的所有文件.
这是我的文件列表:
我曾尝试在bash脚本做的事:iiumlabs.[].csv.pgp
和iiumlabs*
,我想袅袅不上通配符大.
curl -u login:pass ftp.myftpsite.com/iiumlabs* -O
Run Code Online (Sandbox Code Playgroud)
问题:如何使用cURL下载此文件目录?
小智 36
如果您不必卷曲,您可能希望在递归模式下使用wget但将其限制为一个递归级别,请尝试以下操作:
wget --no-verbose --no-parent --recursive --level=1\
--no-directories --user=login --password=pass ftp://ftp.myftpsite.com/
Run Code Online (Sandbox Code Playgroud)
--no-parent
:递归检索时,不要提升到父目录.--level=depth
:指定递归最大深度级别深度.默认最大深度为五层.--no-directories
:递归检索时不要创建目录层次结构.Mic*_*rny 11
好的,考虑到您使用的是Windows,最简单的方法是使用ftp
捆绑的标准工具.我将以下解决方案基于Windows XP,希望它在其他版本上也能正常工作(或稍作修改).
首先,您需要为程序创建一个批处理(脚本)文件ftp
,其中包含相关说明.根据需要命名,然后输入:
curl -u login:pass ftp.myftpsite.com/iiumlabs* -O
open ftp.myftpsite.com
login
pass
mget *
quit
Run Code Online (Sandbox Code Playgroud)
第一行打开与ftp服务器的连接ftp.myftpsite.com
.以下两行指定了登录,以及ftp要求的密码(替换login
和pass
仅使用登录名和密码,没有任何关键字).然后,您mget *
用来获取所有文件.而不是*
,您可以使用任何通配符.最后,您使用quit
关闭ftp
程序而无需交互式提示.
如果您需要先输入某个目录,请先添加cd
命令mget
.它应该非常简单.
最后,编写该文件并运行ftp
如下:
ftp -i -s:yourscript
Run Code Online (Sandbox Code Playgroud)
其中-i
禁用交互(询问下载文件前),并-s
指定要创建的脚本路径.
遗憾的是,Windows中本机不支持通过SSH进行文件传输.但是对于那种情况,你可能还是想要使用PuTTy工具.对于这种情况特别感兴趣的是pscp
其实际上是openssh scp
命令的PuTTy反对部分.
语法类似于copy
命令,它支持通配符:
pscp -batch login@mysshsite.com:iiumlabs* .
Run Code Online (Sandbox Code Playgroud)
如果使用密钥文件进行身份验证,则应使用密钥文件进行身份验证-i path-to-key-file
.如果你使用密码,-pw pass
.它还可以使用load -load your-session-name
参数重用使用PuTTy保存的会话.
小智 7
这样的事情怎么样:
for /f %%f in ('curl -s -l -u user:pass ftp://ftp.myftpsite.com/') do curl -O -u user:pass ftp://ftp.myftpsite.com/%%f
Run Code Online (Sandbox Code Playgroud)
小智 6
对于 Mac,您可以使用这样的脚本:
for f in $(curl -s -l -u user:pass ftp://your_ftp_server_ip/folder/)
do curl -O -u user:pass ftp://your_ftp_server_ip/folder/$f
done
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
90970 次 |
最近记录: |