我制作了这个脚本来下载带有隐式SSL的远程FTP中的文件夹:
open -d ftps://USER:"PASS"@ftp.xxx.tld:990
mirror --verbose --continue /remote/folder $HOME/destination/folder;
bye
它连接,功能是:
<--- 220-Microsoft FTP Service
<--- 220 FTP SOMECOMPANY
---> FEAT
<--- 211-Extended features supported:
<--- LANG EN*
<--- UTF8
<--- AUTH TLS;TLS-C;SSL;TLS-P;
<--- PBSZ
<--- PROT C;P;
<--- CCC
<--- HOST
<--- SIZE
<--- MDTM
<--- REST STREAM
<--- 211 END
但是当镜像命令尝试执行其操作时,它会得到:
<--- 257 "/" is current directory.
---> PBSZ 0
---- CWD path to be sent is `/remote/folder'
<--- 200 PBSZ command successful.
---> CWD remote
<--- 550 Access is denied.
mirror: Access failed: 550 Access is denied. (/remote/folder)
---> CWD folder
<--- 550 The system cannot find the file specified.
---> QUIT
当我手动连接lftp
时,例如我确实有 ls 访问权限,但无法更改目录,同样的错误,550。
在FileZila上,它运行良好,我确实可以访问该文件夹并可以下载文件。我在这里感到困惑。已经尝试过神秘的事情,例如使用:
lftp -e "set ftp:use-allo false; set ftp:passive-mode true; set ftp:prefer-epsv false;...
无济于事。有什么提示吗?谢谢!
您可能必须使用"set ftp:use-tvfs yes"来强制TVFS。它启用类似Unix的路径,即使服务器忘记宣布其支持。
由于 ftp 服务器托管在 Windows 环境中,我不得不使用 \ 而不是/来定义路径。