错过了 FTP 的 get 命令

错过了 FTP 的 get 命令

我使用的是 AIX 7.1。

我制作了一些 shell 脚本并命名为 /bin/bsh。

在脚本中,我通过 FTP 连接到服务器,并有许多 get 命令,因为我想避免通配符问题。我只是声明每个文件名并逐个获取它们,例如:

get PDF_02378230_20110609.PDF
get PDF_02432482_20110609.PDF
get PDF_02432565_20110609.PDF
get PDF_02432573_20110609.PDF
get PDF_02432581_20110609.PDF
get PDF_02432599_20110609.PDF
get PDF_02432607_20110609.PDF
get PDF_02432615_20110609.PDF
get PDF_02432623_20110609.PDF
get PDF_02432649_20110609.PDF
get PDF_02432656_20110609.PDF
get PDF_02432672_20110609.PDF
get PDF_02432755_20110609.PDF
get PDF_02432763_20110609.PDF
get PDF_02432821_20110609.PDF
get PDF_02432920_20110609.PDF
get PDF_02433175_20110609.PDF
get PDF_02433266_20110609.PDF
get PDF_02433290_20110609.PDF
get PDF_02433308_20110609.PDF
get PDF_02433373_20110609.PDF
get PDF_02433399_20110609.PDF

1 个 shell 脚本中最多可以传输 100000 个文件。我会运行这些 shell 脚本并让它们通过 ftp 将文件下载下来。但在某些 shell 脚本中,有 1 或 2 个丢失的文件没有被“获取”。例如,当我计算文件数量时,可能比 shell 脚本中“get”命令的数量少 1 或 2 个文件。我在日志中找不到异常或错误。事实是,我无法逐行浏览整个日志,因为它太长了。但我发现哪个文件丢失了,我尝试用丢失的文件名搜索日志文件,但找不到该文件名的任何痕迹。

答案1

一些 FTP 客户端喜欢lftpncftp有一个mirror命令,可用于通过确定同步本地和远程文件夹所需执行的操作来避免此类问题。

您还可以检查您的客户端是否支持mget或执行递归下载并在父文件夹而不是其中的所有内容上工作的方法。

然而,最好的解决方案是切换到不同的协议。这听起来是开始使用的好时机rsync

答案2

如果另一端必须是 FTP 服务器,我会切换到 wget。即使这样,您仍然需要处理个别文件无法正确传输的异常。但是,使用 wget,您至少可以告诉它每个文件重试几次,您也可以再次运行它,但告诉它忽略本地大小相同的任何文件(因此它只会重新获取它没有获取的文件)第一次没获得)。

不确定 AIX 7.1 是否预装了 wget,但它会在 Linux Toolbox CD 上,或者您可以从IBM 网站

相关内容