我正在尝试下载一个大文件,.tar.gz
并且(大于 2GB)大小。bash 脚本还执行许多其他操作,因此我想启动下载,然后继续处理 bash 脚本中的其他命令。我正在使用wget
并通过管道传输到tar
并在后台运行它&
。
wget -q "https://download-of-large-file-here.tar.gz" | tar xz &
# other commands here
然而,这与以下内容相悖:
gzip: stdin: unexpected end of file
tar: Child returned status 1
tar: Error is not recoverable: exiting now
知道如何让它工作吗?
答案1
您必须指示wget
写入 STDOUT,通过传递-O -
给 wget 来执行此操作,否则它会将文件保存到磁盘。tar
失败是因为执行时它需要来自 STDIN 的某些内容。
这应该有效:
wget -q -O - "https://download-of-large-file-here.tar.gz" | tar xz &
其中-q
抑制来自 STDOUT 的默认进度信息并将-O -
输出文件设置为 STDOUT。