batch file语法从FTP服务器获取文件

我无法从FTP服务器获取所有文件。 通常我使用命令行/terminal获取所有文件,语法如下: get a.txt (非常非常浪费时间,首先使用loginvalidation)

所以,我的期望是我想从FTP服务器获取所有文件,用脚本(批处理),所以我不浪费我的时间使用terminal/命令行。 我只想运行脚本。 当然,loginauthentication需要包含在脚本中。 我将如何做到这一点?

尝试使用FTP客户端编写脚本,节省很多麻烦。 下载ncftp ,并使用它。

基本上:

 ncftpget -R ftp://user:password@host/path/to your files 

-R意味着它执行recursion传输

对于这种我使用wget的东西:

 wget -m ftp://user:[email protected] 

或者lftp的“镜像”命令:

 lftp -c mirror ftp://user:[email protected]/ 

SCP

首先,我build议你通过FTP使用SCP。 FTP是不安全的,并在清除传输凭据和文件。 SCP本质上是sc运行在ssh而且是相当安全的,特别是如果你使用密钥对进行authentication的话。

SFTP

另一种select是使用SFTP。 尽pipe名称不同,它不是通过SSL或SSH连接的FTP。 这是一个全新的协议。 然而,正如上面的build议,这不是一个确切的答案你的问题,而是一些关于FTP的不安全的肥皂箱。

FTP

select你的ftp客户端,然后研究它如何处理脚本。 你没有提到你正在使用的操作系统或你的操作系统上的哪个客户端。 你需要提供这些信息,然后才能对你更有用。

你使用什么操作系统和FTP客户端?

编辑:我做了“batch file”等同于Windows环境的连接。 在这种情况下,试试这个:

 ftp.exe -s:filename 

-s为ftp命令提供一个具有FTP命令的文件。 在ftp.exe读取的文件中,创buildlogin和检索文件的命令。

 open ftp.server.name user [username] [password] get *.txt quit 

有关FTP和batch file的更多信息,请查看此Microsoft知识库文章 。

如果你使用的是linux,你可以在你select的shell中使用大量的ftp客户端。 在连接到FTP服务器时,您可以select使用客户端自己指定的各种交换机提供用户名和密码。 用户名和密码在FTP URL中的标准语法是ftp://user:[email protected]/

从那里在你的脚本中使用带有通配符的get命令的新行将下载所有你想要的文件。 例如get *.txt但是,请注意, get mult文件和镜像目录的确切语法将取决于您的FTP客户端。 我的首选是ncftp ,它具有与其他FTP客户端不同的镜像选项。

柏油

作为奖励,我会build议首先将您想要减less传输大小的文件进行tar,并保留UNIX权限。 FTP在恢复网站或应用程序时会剥离文件的原始权限,这些文件可能相当麻烦。

但是,除非FTP服务器本身支持扩展命令,否则这通常不能用FTP客户端来完成。 例如,FTP服务器ncftpd提供了一些其他FTP服务器不支持的扩展命令。 所以现在我已经绕了整个圈子,build议你build立一个SSH隧道,这样你就可以先打开目录。 在build立一个SSH守护进程的情况下,你可以把SCP放到服务器上,然后检索TAR文件,而不是使用FTP。

如果你必须保持等式中的FTP,你可以在服务器上创build一个cron作业,打开你想要的文件,把它放到你的FTP目录中,然后创build一个连接到服务器并检索tar文件的FTP脚本。

自动化是你的朋友。 你走在正确的道路上,开始思考更多关于安全性和优化。