tar — 打包核心 (不壓縮/調用壓縮程序)
主選項 (必選一)
| 選項 | 作用 |
-c | 創建新檔案 |
-x | 解包/解壓 |
-t | 列出內容 |
-r | 追加文件到檔案末尾 |
-u | 更新文件 (較新則替換/追加) |
輔選項
| 選項 | 作用 |
-f | 指定檔案名 (必用) |
-v | 顯示過程 |
-z | 調用 gzip (.gz/.tgz/.tar.gz) |
-j | 調用 bzip2 (.bz2/.tar.bz2) |
-J | 調用 xz (.xz/.tar.xz) |
-Z | 調用 compress (.Z/.tar.Z) |
-C | 指定解包目標目錄 |
-p | 保留權限/屬性 |
-k | 保留現有文件不覆蓋 |
常用組合速查
| 操作 | 命令 |
| 打包目錄 | tar -cf backup.tar /path/to/dir |
| 打包並 gzip 壓縮 | tar -czf backup.tar.gz /path/to/dir |
| 打包並 bzip2 壓縮 | tar -cjf backup.tar.bz2 /path/to/dir |
| 打包並 xz 壓縮 (壓縮比最高) | tar -cJf backup.tar.xz /path/to/dir |
| 解包到當前目錄 | tar -xf backup.tar |
| 解壓 .tar.gz | tar -xzf backup.tar.gz |
| 解壓 .tar.bz2 | tar -xjf backup.tar.bz2 |
| 解壓 .tar.xz | tar -xJf backup.tar.xz |
| 解壓到指定目錄 | tar -xf backup.tar -C /opt/ |
| 查看內容不解壓 | tar -tf backup.tar.gz |
獨立壓縮工具
| 工具 | 壓縮 | 解壓 | 典型後綴 |
| gzip | gzip file | gzip -d file.gz / gunzip file.gz | .gz |
| bzip2 | bzip2 file | bzip2 -d file.bz2 / bunzip2 file.bz2 | .bz2 |
| xz | xz file | xz -d file.xz / unxz file.xz | .xz |
| compress | compress file | uncompress file.Z | .Z |
| zip | zip -r archive.zip dir/ | unzip archive.zip | .zip |
| rar | rar a archive.rar dir/ | unrar x archive.rar | .rar |
格式識別與解壓對應表
| 後綴 | 解壓命令 |
| .tar | tar -xf |
| .gz | gzip -d / gunzip |
| .tgz / .tar.gz | tar -xzf |
| .bz2 | bzip2 -d / bunzip2 |
| .tar.bz2 | tar -xjf |
| .xz | xz -d / unxz |
| .tar.xz | tar -xJf |
| .Z | uncompress |
| .tar.Z | tar -xZf |
| .zip | unzip |
| .rar | unrar x |
進階技巧
- 排除文件:
tar -czf backup.tar.gz --exclude='*.log' --exclude='node_modules' /path
- 分卷壓縮:
tar -czf - /path | split -b 100M - backup.tar.gz.part
- 遠程打包傳輸:
tar -czf - /path | ssh user@host "cat > backup.tar.gz"
- 保留權限屬性:
tar -cpf backup.tar /path (適合備份系統目錄)
- 解壓覆蓋提示:
tar -xkf backup.tar (保留舊文件)
總結
掌握 tar -czf/xzf、tar -cjf/xjf、tar -cJf/xJf 三大主流組合,加上 -C 目標目錄、-p 保留屬性、--exclude 排除模式,覆蓋 99% 壓縮解壓場景。xz 壓縮比最高但速度慢,bzip2 折中,gzip 最快兼容性最好。