Tar

wget 並在後台通過管道傳輸到 tar

  • August 12, 2015

我正在嘗試下載一個大小為.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 的東西。

這應該有效:

wget -q -O - "https://download-of-large-file-here.tar.gz" | tar xz &

where-q抑制來自 STDOUT 的預設進度資訊-O -並將輸出文件設置為 STDOUT。

引用自:https://serverfault.com/questions/713708