【问题标题】:FTP not uploading last 4 bytesFTP 未上传最后 4 个字节
【发布时间】:2009-01-11 21:14:47
【问题描述】:

我有一个 bash 脚本可以将一些文件上传到我的网络服务器。问题是它似乎假设当他们到达网络服务器时,他们丢失了文件的最后 4kb。

在我的计算机上,该文件被列为 8kb(四舍五入,因为块为 4kb)但仅上传了 4kb。

这是有趣/令人困惑的部分,这只影响最后上传的文件,就好像它提前关闭了会话一样。

这是一个已知问题吗?手册页没有我能看到的内容。

以下是脚本的副本(当然不包括登录详细信息):

ftp -in <ftp.host> <<EOF
quote USER <username>
quote PASS <password>

binary

put file1.xml
put file2.xml
put file3.xml
put file4.xml
put file5.xml
put file6.xml
put file7.xml
put file8.xml
put file9.xml
put file0.xml
quit
EOF

一个示例文件的链接是http://woarl.com/xml/f8d9b3b981a356efc1ecbb705b369c9e.xml

【问题讨论】:

    标签: bash ftp


    【解决方案1】:

    当客户端退出时,最后一个 put 命令可能仍在传输数据(通过被动连接)。 BYE 只是 quit 的别名,所以它没有帮助,但也许你可以尝试在 put 和 quit 之间添加一些其他命令,例如 ls。

    或者如果没有防火墙禁止,将会话设置为活动模式很可能会强制客户端等待最后一次放置完成后再发出退出。

    【讨论】:

    • 好主意。我打算放一个额外的 put(对于不需要的文件),但认为这样做会很麻烦, ls 并不完美,但仍然更好。
    【解决方案2】:

    当然,这不是您要的,但对于这类事情,我喜欢安装 ncftp 实用程序。这包括 ncftpput 和 ncftpbatch 用于批处理一堆 ftp 命令并执行它们。

    【讨论】:

      【解决方案3】:

      听起来您的 FTP 程序在开始“放置”之后但在完成之前立即读取“退出”。

      您可能想找到一个不同的命令,而不是等待上传完成的退出。也许是“再见”之类的。

      【讨论】:

      • 不,这个没有区别,尽管它确实在不同的点上破坏了它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-11
      • 2020-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-03
      • 1970-01-01
      相关资源
      最近更新 更多