鳍

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

因此,我的期望是使用脚本(批处理)从 FTP 服务器获取所有文件,这样我就不会浪费时间使用终端/命令行。我只想运行脚本。当然,脚本中需要包含登录身份验证。我该怎么做?

答案1

省去使用 FTP 客户端编写脚本的麻烦。下载FTP服务器,然后使用它。

基本上:

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

-R 表示进行递归传输

答案2

对于这种东西我使用 wget:

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

或者 lftp 的“mirror”命令:

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

答案3

SCP

首先,我建议您使用 SCP 而不是 FTP。FTP 不安全,并且会以明文形式传输凭证和文件。SCP 本质上是在 FTPsc上运行的ssh,而且相当安全,尤其是如果您使用密钥对进行身份验证。

安全FTP

另一个选择是使用 SFTP。尽管名字如此,但它并不是通过 SSL 或 SSH 连接的 FTP。它是一种全新的协议。但是,与上述建议一样,它并不是对您问题的确切答案,而只是对 FTP 不安全性的一点夸张说法。

FTP

选择您的 ftp 客户端,然后研究它如何处理脚本。您尚未提及您使用的是什么操作系统,或您在操作系统上使用的哪个客户端。您需要提供这些信息,我们才能为您提供更多帮助。

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

编辑:我认为“批处理文件”等同于 Windows 环境。在这种情况下,请尝试以下操作:

ftp.exe -s:filename

-sftp 命令提供一个包含 FTP 命令的文件。在 ftp.exe 读取的文件中,创建登录和检索文件的命令。

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

有关 FTP 和批处理文件的更多信息,请查看此 Microsoft 知识库文章

如果您使用的是 Linux,您可以在您选择的 shell 中使用大量 ftp 客户端。连接到 FTP 服务器时,您可以选择使用客户端本身指定的各种开关提供用户名和密码。FTP URL 中用户名和密码的标准语法是ftp://user:[email protected]/

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

柏油

作为奖励,我建议第一的将您想要减少传输大小的文件打包成 tar 文件,同时保留 UNIX 权限。FTP 会剥夺文件的原始权限,这在恢复网站或应用程序时可能相当烦人。

但是,除非 FTP 服务器本身支持扩展命令,否则通常无法使用 FTP 客户端执行此操作。例如,FTP 服务器ncftpd提供其他 FTP 服务器不提供的一些扩展命令。所以现在我又回到了原点,建议您设置 SSH 隧道,以便先对目录进行 tar 处理。设置 SSH 守护程序后,您不妨通过 SCP 进入服务器并检索 TAR 文件,而不是使用 FTP。

如果您必须将 FTP 保留在等式中,则可以在服务器上创建一个 cron 作业,将您想要的文件打包成 tar,将其放入您的 FTP 目录中,然后创建一个连接到服务器并检索 tar 文件的 FTP 脚本。

自动化是你的朋友。你走在正确的道路上,只需开始更多地考虑安全性和优化。

相关内容