tar 是什麼?
tar 是 'Tape Archive' 的縮寫,最初是為將數據備份到磁帶而創建的。現在,它被用作 Linux 的標準工具,用於將多個檔案和目錄打包成一個檔案,以便於管理或傳輸。tar 本身只負責打包檔案,壓縮功能則通過單獨的選項(-z, -j, -J)來指定。
核心操作模式
tar 一次只能執行一種主要模式(創建、提取、列表)。
- -c (Create): 創建新的封存檔案。
- -x (Extract): 從封存檔案中提取檔案。
- -t (List): 不解壓縮即可查看封存檔案的內容(列表)。
- -f (File): 指定操作對象的封存「檔案」。幾乎所有操作都必須使用。
主要選項 (Shell)
tar 透過組合不同的選項來使用。最重要的是選擇 `-c`, `-x`, `-t` 中的一個。
1. 操作模式 (選擇一個)
2. 指定檔案與壓縮
3. 目標與附加功能
生成的命令:
請試著組合命令。
這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。
`tar` 執行命令。
請將上述選項組合在一起,與 AI 一同虛擬執行命令。
使用情境範例 (Shell)
最常用的組合範例。(選項前的 `-` 可省略,但建議明確標示。)
使用 gzip 創建壓縮檔 (.tar.gz)
tar -cvzf backup.tar.gz /home/user/data
c(創建), v(過程), z(gzip), f(檔案) + [結果檔案] + [目標]
解壓縮 gzip 檔案 (.tar.gz)
tar -xvzf backup.tar.gz
x(提取), v(過程), z(gzip), f(檔案) + [目標檔案]
查看壓縮檔案內容列表 (.tar.gz)
tar -tvf backup.tar.gz
t(列表), v(過程), f(檔案) (最新的 tar 會自動偵測 -z)
解壓縮到指定目錄
tar -xvzf backup.tar.gz -C /opt/restore
使用 -C 選項指定路徑。
使用 bzip2 創建壓縮檔 (.tar.bz2)
tar -cvjf archive.tar.bz2 ./docs
使用 j(bzip2) 選項代替 z。
解壓縮 bzip2 檔案 (.tar.bz2)
tar -xvjf archive.tar.bz2
排除特定檔案/目錄後壓縮
tar -cvzf app.tar.gz ./app --exclude="*.log" --exclude="node_modules"
使用 --exclude 選項。(可多次使用)
安裝
tar 幾乎預設安裝在所有 Linux 發行版(和 macOS)中。(通常是 GNU tar)。如果因任何原因需要安裝,可以使用 'tar' 套件名稱進行安裝。
預設已安裝
幾乎不需要額外安裝。請輸入 `tar --version` 來檢查版本。
Debian/Ubuntu (如果需要)
sudo apt update && sudo apt install -y tar
RHEL/CentOS/Fedora (如果需要)
sudo dnf install -y tar
提示與注意事項
實用技巧
- 省略連字號(-): 按照舊慣例,可以省略第一個選項組的連字號,例如 `tar cvf ...`。(例如:`tar cvf` = `tar -cvf`)但為了清晰起見,建議加上 `-`。
- 自動偵測壓縮格式: 最新的 `tar` 在提取(-x)時,即使沒有 `-z`、`-j`、`-J` 選項,也能根據檔案擴展名自動偵測壓縮格式。(例如:只需輸入 `tar -xf archive.tar.gz` 即可。)
- 保留權限 (-p): 系統備份後恢復時,使用 `-p` 選項保留檔案的權限和所有權非常重要。
- 路徑問題 (-C): 如果想將檔案解壓縮到其他位置而不是當前位置,使用 `-C /路徑` 選項比移動檔案更有效率。
- 絕對路徑注意事項: 創建(-c)時,如果使用 `/home/user` 這樣的絕對路徑打包檔案,則在提取(-x)時,檔案也會解壓縮到相同的絕對路徑。(最新的 tar 出於安全原因可能會移除前面的 `/`)盡可能使用相對路徑打包,例如 `cd /home && tar -cvf user.tar ./user` 會更安全。