Tar

tar xf 命令給文件未找到

  • June 21, 2021

我正在嘗試從整個 tar.gz 中提取一個文件,但它不起作用。以下是我試圖模擬問題的命令

mkdir test
touch test/version.txt
echo "1.0.2" > test/version.txt 
tar zcvf rootfs.tar -C test .
gzip  -f -9 -n -c rootfs.tar > rootfs.tar.gz
tar xf rootfs.tar.gz version.txt

tar: version.txt: Not found in archive
tar: Exiting with failure status due to previous errors

能否請您提供原因,上面的 tar.gz 中存在 version.txt 文件

rootfs.tar是一個用 gzip 壓縮的 tar 檔案。rootfs.tar.gz是用 gzip 壓縮兩次的 tar 存檔。Tar 似乎被雙重壓縮弄糊塗了,將文件視為空存檔而不是報告錯誤。

壓縮兩次是沒有意義的,所以刪除這個額外的 gzip 步驟。為避免混淆,請呼叫壓縮存檔rootfs.tar.gz而不是rootfs.tar. 並且由於您要傳遞的路徑以tar開頭.,因此您需要./在提取時傳遞以開頭的路徑: tar 不會將./路徑視為無操作。

mkdir test
touch test/version.txt
echo "1.0.2" > test/version.txt 
tar zcvf rootfs.tar.gz -C test .
tar xf rootfs.tar.gz ./version.txt

如果要避免./文件名中的前綴,可以--transform在創建存檔時使用。

tar zcvf rootfs.tar.gz --transform='s!^\./!!' -C test .
tar xf rootfs.tar.gz version.txt

引用自:https://unix.stackexchange.com/questions/655122