在后台通过 wget 和管道传输到 tar

在后台通过 wget 和管道传输到 tar

我正在尝试下载一个大文件,.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。

相关内容