Tar
tar xf 命令給文件未找到
我正在嘗試從整個 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