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

标签 linux bash ssh wget

我有一个 php 脚本可以触发一个远程 bash 脚本,该脚本又会触发另一个远程 bash 脚本(所有机器都使用 ssh key 对相互通信并且工作正常)...

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 强制它在后台下载,但如果我这样做,则不会下载任何内容。

在这种情况下,我是否以错误的方式使用了 wget?由于它是从远程 bash 脚本触发的,我是否需要提供一些额外的安全措施或命令才能使其正常工作?

非常感谢!

最佳答案

根据评论,您确定您的 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 的行为与此有何不同。

关于linux - bash 脚本中的 wget 只下载部分文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37678659/

相关文章:

windows - 在 Windows 上通过 ssh 连接到 Git 失败

linux - SSH 访问父主机文件夹

linux - 意外回声

linux - grep 遍历数千个 gz 文件的最快方法?

python - 在django中创建子进程任务

regex - 使用 bash 用空格替换连字符

linux - 主流内核中的 EPOLLEXCLUSIVE 和 EPOLLROUNDROBIN 标志

linux - dup() 系统调用的解释

python - 从 python 在后台运行 "linux" sleep

linux - 如何在野外通过 SSH 连接到 Linux 机器