tar(Tape Archive)是 Linux 歸檔標準,本身不壓縮,透過整合 gzip/bzip2/xz/zstd 實現「歸檔+壓縮」一站式。本文系統整理主/輔助選項矩陣、五大壓縮模式、九大實戰場景(含增量、遠端管線、排除、權限保留、日期過濾)。
| 選項 | 功能 |
|---|---|
-c | 建立新歸檔 |
-x | 解壓/提取歸檔 |
-t | 列出歸檔內容 |
-r | 追加檔案至歸檔末尾 |
-u | 更新歸檔(僅較新檔案) |
| 選項 | 功能 |
|---|---|
-z | 整合 gzip (.tar.gz / .tgz) |
-j | 整合 bzip2 (.tar.bz2) |
-J | 整合 xz (.tar.xz) |
--zstd | 整合 zstd (.tar.zst) - 現代推薦 |
-Z | 整合 compress (.tar.Z) - 罕用 |
-f FILE | 指定歸檔檔案/裝置(必須為最後選項) |
-v | 顯示處理檔案名 |
-p | 保留權限/屬性(Root 解壓預設開啟) |
-N DATE | 僅歸檔指定日期後的檔案 |
--exclude PATTERN | 排除符合模式的檔案/目錄 |
-C DIR | 切換至目錄後操作(解壓/歸檔) |
--strip-components=N | 解壓時移除前 N 層路徑 |
--listed-incremental=FILE | 增量備份快照檔 |
--acls --xattrs | 保留 ACL/擴展屬性 |
| 模式 | 副檔名 | 建立指令 | 解壓指令 |
|---|---|---|---|
| gzip | .tar.gz / .tgz | tar -zcvf | tar -zxvf |
| bzip2 | .tar.bz2 | tar -jcvf | tar -jxvf |
| xz | .tar.xz | tar -Jcvf | tar -Jxvf |
| zstd | .tar.zst | tar --zstd -cvf | tar --zstd -xvf |
| 無壓縮 | .tar | tar -cvf | tar -xvf |
tar -cvf /opt/etc.tar /etc
tar -zcvf /opt/etc.tar.gz /etc
tar -jcvf /opt/etc.tar.bz2 /etc
tar -ztvf /opt/etc.tar.gz | more
cd /usr/local/src
tar -zxvf /opt/etc.tar.gz
# 產生 /usr/local/src/etc/...
tar -zcvpf /opt/etc.tar.gz /etc
cd /opt
tar -zxvf /opt/etc.tar.gz etc/inittab
# 必須用 -t 列出的完整相對路徑
tar -N "2008/07/21" -zcvf log.tar.gz /var/log
tar --exclude /home/ixdba -zcvf myfile.tar.gz /home/* /etc
# 本地 → 遠端
tar -czf - /etc | ssh user@remote "tar -xzf - -C /target"
# 遠端 → 本地
ssh user@remote "tar -czf - /etc" | tar -xzf - -C /target
# 完全備份(建立快照檔)
tar -czf /backup/full_$(date +%F).tar.gz --listed-incremental=/backup/snapshot.snar /etc
# 增量備份(同一快照檔)
tar -czf /backup/incr_$(date +%F).tar.gz --listed-incremental=/backup/snapshot.snar /etc
快照檔記錄 inode/時間戳,下次僅歸檔變更檔案。還原時:先解壓完全備份,再依序解壓增量備份。
tar 是「歸檔大師」,壓縮整合是「外掛引擎」。掌握 -c/-x/-t 三大主選項、-z/-j/-J/--zstd 四大壓縮引擎、-p 權限保留、--exclude 排除、-N 日期過濾、--listed-incremental 增量、-C 目錄切換、-f - 標準輸出管線,即能構建企業級備份遷移體系。現代首選 tar --zstd:速度快、壓縮比高、記憶體可控。