在 Linux 中,可以用 tar.tar.gz(或 .tgz)檔案中只解壓特定目錄,不必整包解壓。以下依「最實務、最常用」方式說明。

一、先查看 tar.gz 內有哪些目錄(非常重要)

在解壓前,建議先確認「實際路徑名稱」:

tar -tzf archive.tar.gz

或只看前幾行:

tar -tzf archive.tar.gz | head

你會看到類似:

project/
project/config/
project/config/app.yml
project/src/
project/src/main.py
project/docs/

⚠️ 注意:tar 裡的路徑通常包含最外層目錄(例如 project/


二、解壓「特定目錄」的基本語法

tar -xzf archive.tar.gz 路徑/目錄

範例:只解壓 project/config/

tar -xzf archive.tar.gz project/config/

結果會建立:

./project/config/

三、解壓多個指定目錄

tar -xzf archive.tar.gz project/config/ project/docs/

四、只解壓特定目錄到「指定目的地」

使用 -C(change directory):

tar -xzf archive.tar.gz project/config/ -C /opt/app/

➡️ 結果:

/opt/app/project/config/

五、移除最外層目錄(常見需求)

若你 不想要 project/ 這一層,可用 --strip-components

範例

tar -xzf archive.tar.gz project/config/ \
  --strip-components=1

結果會是:

./config/

搭配 -C

tar -xzf archive.tar.gz project/config/ \
  --strip-components=1 \
  -C /opt/app/

➡️ /opt/app/config/


六、使用萬用字元(wildcard)解壓子目錄

解壓所有 config 目錄

tar -xzf archive.tar.gz */config/

解壓所有 .yml 設定檔

tar -xzf archive.tar.gz --wildcards '*/config/*.yml'

⚠️ 使用萬用字元時,務必加上 --wildcards


七、實務常見錯誤與排查

❌ 錯誤:檔案不存在

tar: project/config: Not found in archive

✔ 解法:先用

tar -tzf archive.tar.gz | grep config

❌ 解壓結果「什麼都沒有」

常見原因:

  • 目錄名稱拼錯
  • 少了最外層目錄(例如實際是 project/config/,卻打 config/

八、快速對照表

需求 指令
查看內容 tar -tzf file.tar.gz
解壓指定目錄 tar -xzf file.tar.gz dir/
解壓到指定路徑 tar -xzf file.tar.gz dir/ -C /path
移除外層目錄 --strip-components=1
使用萬用字元 --wildcards
最後修改日期: 2025/12/15

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。