我正在尝试获取我们在服务器上的所有文件的列表(特别是我们在那里的每个pdf文件).我尝试使用总指挥官并搜索文件.它在某种程度上起作用,因为我得到了我们在那里的每个pdf的列表,但是无法导出结果(我们有100.000+个文件)
我已经尝试使用bash脚本来获取信息,但我对linux不是很有经验,而且我真的不知道我在做什么.
我的脚本看起来像这样:
#!/bin/bash
hostname="<host>"
ftp -i -nv $hostname << EOF
user <username> <password>
ls -R
EOF
Run Code Online (Sandbox Code Playgroud)
运行上面的脚本我得到
?Invalid command
501 Illegal PORT command
ftp: bind: Address already in use
221 Goodbye
Run Code Online (Sandbox Code Playgroud)
任何帮助或指向我搜索什么将不胜感激.
小智 33
有了卷曲,这很方便curl ftp://yourftpserver/dir/ --user username:password
尝试配置ftp为使用 PASV(被动)模式进行数据传输。这是通过-p开关完成的。
我不确定您是否能够使用此 ftp 客户端进行递归文件列表。ls -R就我而言,只是给出了当前工作目录中的文件和目录列表。也许使用单个会话(使用 cURL 或 ftp)在 shell/bash 中列出递归 FTP 目录会对您有所帮助。
ncftpls ftp://yourftpserver/dir/*.pdf
请注意,*.pdf上述命令中的模式等按预期工作.
对于递归,请使用-R.有关更多选项,请参阅man ncftpls.
ncftpls由ncftp包裹提供.对于RHEL,此包在epelrepo中可用.
curl ftp://user:password@<ip>/path/
Run Code Online (Sandbox Code Playgroud)
/如果是目录,最后一个是必须的。这适用于 curl 版本 7.29.0