bash脚本中的wget只下载部分文件?

时间:2016-06-07 11:53:19

标签: linux bash ssh wget

我有一个php脚本触发一个远程bash脚本,该脚本反过来触发另一个远程bash脚本(所有机器都使用ssh密钥对相互通信并且工作正常)...

PHP(服务器1) - > BASH(服务器2) - > BASH(服务器3)

第一个bash脚本中有很多函数都可以正常工作,变量在整个过程中传递,然后最后有一个命令在服务器3上运行另一个脚本:

ssh root@xxx.xxx.xxx.xxx "/var/www/getpodcast.sh $1";

这也有效,因为脚本被触发:

getpodcast.sh($ 1包含文件名,例如:mymusic.mp3)

#!/bin/bash
wget -o /var/www/vhosts/site1/httpdocs/audio/$1 http://xxx.xx.xx.xx.xxx/complete/$1

这应该是在此阶段下载文件但由于某种原因它只下载部分文件。完整的文件大小应该在115mb左右,但每次运行它只会下载前10或20k的文件大小?这个数字每次运行都会有所不同,并不是一成不变的。

我已尝试在此脚本中使用wget -b强制它在后台下载,但如果我这样做则不会下载。

我在这种情况下使用错误的方法吗?由于它是从远程bash脚本触发的,我需要提供一些额外的安全性或命令来使其工作吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

根据评论,您确定wget命令的输出包含wget 生成的文本,而不是您指定的URL中的文件内容。

根据wget手册页:

   -o logfile
   --output-file=logfile
       Log all messages to logfile.  The messages are normally reported to
       standard error.

这不是您正在寻找的,所以是的,这是一个wget使用错误。

相反,您可能要么使用curl,它会按照您期望的方式使用-o选项,或者切换到wget' -O O)选项。请注意,默认情况下,wget会将其保存的文件命名为与URL中相同的文件;阅读手册页,了解-O的行为与此有何不同。