我正在尝试下载一个大小为.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
知道如何进行这项工作吗?
您必须指示
wget
写入 STDOUT,通过传递-O -
给 wget 来执行此操作,否则它将文件保存到磁盘。tar
失败是因为执行时它期望来自 STDIN 的东西。这应该有效:
where
-q
抑制来自 STDOUT 的默认进度信息-O -
并将输出文件设置为 STDOUT。