Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Windows 綜合教學 >> 系統指令

TAR 指令完整參數詳解:Linux 打包、壓縮、備份與還原實戰

編輯:系統指令

tar (Tape ARchive) 是 Linux/Unix 歷史最悠久、最通用的歸檔工具,支援多種壓縮演算法 (gzip、bzip2、xz、zstd、compress)、增量備份、多卷存檔、權限保留、排除規則、遠端操作等企業級功能。掌握 tar 參數組合,是系統備份、遷移、部署的核心技能。

核心操作模式 (互斥,必選一)

參數長選項功能
-c--create建立新歸檔
-x--extract / --get解開歸檔
-t--list列出歸檔內容
-r--append附加檔案到現有歸檔
-u--update僅附加較新檔案
-d--diff / --compare比較歸檔與檔案系統差異
-A--catenate / --concatenate合併歸檔
--delete從歸檔刪除 (磁帶裝置慎用)

壓縮/解壓縮參數 (常用組合)

解壓時通常不需指定壓縮參數,tar 會自動偵測 (除非使用非標準管道)。

常用輔助參數

參數演算法副檔名慣例特性
-zgzip.tar.gz / .tgz速度快、相容性最好、壓縮率中等
-jbzip2.tar.bz2 / .tbz2壓縮率較高、速度較慢
-Jxz (LZMA2).tar.xz / .txz壓縮率最高、速度最慢、現代標準
--zstdZstandard.tar.zst極速、高壓縮率、需新版 tar/zstd
-Zcompress.tar.Z舊 Unix 標準、已淘汰
--use-compress-program自訂.tar.custom指定任何支援 -d 的程式 (如 lz4, lzip)
參數功能
-f 檔案指定歸檔檔案 (預設為磁帶裝置 /dev/rmt0,實務必加)
-v詳細顯示處理檔案
-C 目錄切換到指定目錄再操作 (解壓目標/打包來源)
-p保留權限/擁有者/時間戳記 (root 解壓預設開啟)
-P保留絕對路徑 (預設移除前導 /,慎用)
-k保留現有檔案,不覆蓋
-h解析符號連結 (打包連結指向的實體檔案)
-l僅限單一檔案系統 (不跨掛載點)
-X 排除檔從檔案讀取排除模式清單
--exclude=模式直接指定排除模式
--numeric-owner以 UID/GID 儲存而非使用者/群組名 (跨系統備份必備)
--acls / --xattrs / --selinux保留 ACL/擴充屬性/SELinux 上下文
-W寫入後驗證
--checkpoint[=N]每 N 筆顯示進度 (配合 --checkpoint-action=exec=命令)
--totals顯示總位元組數

實戰範例

1. 基本打包/解包 (無壓縮)

tar -cf backup.tar /home/user/data      # 打包
tar -xf backup.tar                      # 解包到目前目錄
tar -tf backup.tar                      # 僅列表

2. 壓縮備份 (最常用)

# gzip (平衡)
tar -czf backup.tar.gz /home/user/data
tar -xzf backup.tar.gz

# xz (最高壓縮,備份存檔首選)
tar -cJf backup.tar.xz /home/user/data
tar -xJf backup.tar.xz

# zstd (極速,大數據/頻繁備份)
tar --zstd -cf backup.tar.zst /home/user/data
tar --zstd -xf backup.tar.zst

3. 指定解壓目標目錄

tar -xzf backup.tar.gz -C /restore/path

4. 排除特定目錄/檔案

tar -czf backup.tar.gz /home/user/data --exclude='*.log' --exclude='cache' --exclude='.git'

5. 增量備份 (快照檔)

# 完全備份 (建立快照)
tar -czf full.tar.gz /data --listed-incremental=snapshot.snar

# 增量備份 (依快照比較)
tar -czf inc1.tar.gz /data --listed-incremental=snapshot.snar
tar -czf inc2.tar.gz /data --listed-incremental=snapshot.snar

6. 遠端備份 (SSH 管道)

# 本地打包 -> 遠端存檔
tar -czf - /data | ssh user@backupsrv "cat > /backup/data_$(date +%F).tar.gz"

# 遠端打包 -> 本地存檔
ssh user@srcsrv "tar -czf - /data" > /backup/data_$(date +%F).tar.gz

7. 保留完整權限/屬性 (系統級備份/遷移)

tar -czpf system_backup.tar.gz / --numeric-owner --acls --xattrs --selinux --one-file-system --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/run --exclude=/tmp --exclude=/var/tmp --exclude=/lost+found

8. 多卷存檔 (大於單一媒體容量)

tar -cMf /dev/tape /data   # 磁帶
# 或分割檔案
tar -czf - /data | split -b 4G - backup.tar.gz.part.

tar vs cpio vs pax vs zip

工具優勢典型用途
tar標準、功能全、支援所有壓縮、增量、ACL、SELinux系統備份、原始碼發布、容器映像層
cpio從 stdin 讀取檔案清單、適合 find 管道、可跨檔案系統initramfs 建構、rpm/deb 內部格式
paxPOSIX 標準、同時支援 tar/cpio 格式跨平台可移植腳本
zipWindows 相容、隨機存取、單檔壓縮跨平台檔案交換、Java JAR/WAR

最佳實務檢查清單

  1. 必加 -f 指定檔案,避免寫入磁帶裝置。
  2. 備份用 -p --numeric-owner --acls --xattrs --selinux 保留完整中繼資料。
  3. 排除虛擬檔案系統 (/proc, /sys, /dev, /run, /tmp)。
  4. 驗證備份:tar -tf backup.tar.gz > /dev/null (測試讀取)、tar -W -czf ... (寫入驗證)。
  5. 異地備份:SSH 管道或 rsync 同步至異地。
  6. 定期演練還原:備份未測試等於不存在。

tar 參數雖多,但核心模式 (-c/-x/-t) + 壓縮 (-z/-j/-J/--zstd) + 目標 (-f) + 目的地 (-C) + 排除 (--exclude) 涵蓋 95% 場景。建立標準化備份腳本庫,納入 CI/CD 與災難恢復演練,才是資料保護的終局之戰。

Copyright © Windows教程網 All Rights Reserved