我有一个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
答案 0 :(得分:3)
当客户端退出时,最后一个put命令可能仍在传输数据(通过被动连接)。 BYE只是退出的别名所以它无济于事,但也许你可以尝试在put和quit之间添加一些其他命令,例如ls。
或者如果没有防火墙禁止,设置会话活动模式很可能会迫使客户端在发出戒烟之前等待最后一次完成。
答案 1 :(得分:2)
当然不是你要问的,但对于我喜欢安装ncftp实用程序的这些事情。这包括ncftpput和ncftpbatch用于批处理一堆ftp命令并执行它们。
答案 2 :(得分:0)
听起来你的FTP程序在启动“put”之后立即读取“退出”,但在完成之前。
您可能希望找到除退出之外的其他命令,等待上传完成。也许是“BYE”或其他一些。