tar 命令完整使用手冊
歡迎來到藍隊云技術(shù)小課堂。
在 Linux 服務(wù)器管理中,文件備份、數(shù)據(jù)遷移、軟件部署常需處理大量文件,將多個文件打包壓縮成單個文件,能大幅提升傳輸效率和存儲便利性。tar 命令作為 Linux 系統(tǒng)默認的歸檔壓縮工具,支持打包、壓縮、解壓等全流程操作,兼容多種壓縮格式(如 gzip、bzip2),是運維工作中的“文件處理利器”。今天就系統(tǒng)講解 tar 命令的使用方法,覆蓋從基礎(chǔ)打包到進階壓縮的全場景需求。
一.基本語法和核心作用
1.1 核心作用
tar(Tape Archive)全稱“磁帶歸檔工具”,核心功能是將多個文件或目錄打包成單個歸檔文件(.tar),同時支持結(jié)合壓縮算法生成壓縮文件(如 .tar.gz、.tar.bz2),也可對已有的歸檔/壓縮文件進行解壓和查看,實現(xiàn)“多文件整合、體積壓縮、數(shù)據(jù)備份”三大核心目標。
1.2 基本語法
tar [核心選項] [歸檔/壓縮文件名] [待處理文件/目錄]
說明:tar 命令通過組合“核心選項”實現(xiàn)不同功能,核心選項無需加“-”前綴(傳統(tǒng)用法),也可加前綴(兼容用法),實操中前者更常用。
1.3 核心選項含義
tar 命令功能由選項組合實現(xiàn),以下是最常用的核心選項,需重點記憶:
選項 | 核心功能 |
c | 創(chuàng)建新的歸檔文件(打包核心選項) |
x | 從歸檔文件中提取文件(解壓核心選項) |
t | 查看歸檔文件中的內(nèi)容(不解壓查看) |
v | 顯示操作過程中的詳細信息(verbose,常用) |
f | 指定歸檔/壓縮文件的名稱(必須放在選項最后) |
z | 使用 gzip 算法進行壓縮/解壓(生成 .tar.gz 格式) |
j | 使用 bzip2 算法進行壓縮/解壓(生成 .tar.bz2 格式) |
2 基礎(chǔ)操作:僅打包不壓縮(.tar 格式)
僅打包不壓縮適用于需保留文件原始屬性、快速整合文件的場景,生成的 .tar 文件體積與源文件總和一致。
2.1 打包文件/目錄
使用 cvf 組合選項(創(chuàng)建+詳細信息+指定文件),實現(xiàn)文件/目錄的打包。
# 打包單個文件(將 file1.txt 打包為 file.tar)
tar cvf file.tar file1.txt
# 打包多個文件(將 file1.txt、file2.pdf 打包為 docs.tar)
tar cvf docs.tar file1.txt file2.pdf
# 打包目錄(將 /home/centos/data 目錄打包為 data.tar)
tar cvf data.tar /home/centos/data
# 打包目錄并排除指定文件(排除 tmp 臨時文件)
tar cvf backup.tar --exclude="*.tmp" /home/centos
2.2 查看打包文件內(nèi)容
使用 tvf 組合選項(查看+詳細信息+指定文件),無需解壓即可查看 .tar 文件中的內(nèi)容。
# 查看 data.tar 中的文件列表及屬性
tar tvf data.tar
# 過濾查看指定類型文件(僅看 .txt 文件)
tar tvf docs.tar | grep ".txt"
2.3 解壓打包文件
使用 xvf 組合選項(提取+詳細信息+指定文件),將 .tar 文件解壓到當前目錄。
# 解壓 data.tar 到當前目錄
tar xvf data.tar
# 解壓到指定目錄(目錄需提前創(chuàng)建)
mkdir -p /tmp/restore
tar xvf data.tar -C /tmp/restore
# 僅解壓歸檔中的指定文件(只解壓 file1.txt)
tar xvf docs.tar file1.txt
3 進階操作:打包并壓縮(主流格式)
結(jié)合壓縮算法打包,可大幅減小文件體積,是備份和傳輸?shù)某S梅绞?。Linux 中最主流的兩種格式為 .tar.gz(壓縮速度快)和 .tar.bz2(壓縮率更高)。
3.1 gzip 壓縮/解壓(.tar.gz 格式)
使用 z 選項結(jié)合 gzip 算法,壓縮速度快、兼容性好,是最常用的壓縮格式。
# 打包并壓縮(核心選項 zcvf)
# 示例1:壓縮單個目錄(生成 data.tar.gz)
tar zcvf data.tar.gz /home/centos/data
# 示例2:壓縮多個文件(生成 docs.tar.gz)
tar zcvf docs.tar.gz file1.txt file2.pdf img/
# 示例3:壓縮時排除多個文件/目錄
tar zcvf backup.tar.gz --exclude="*.log" --exclude="tmp/" /home/centos
# 查看壓縮文件內(nèi)容(核心選項 ztvf)
tar ztvf data.tar.gz
# 解壓壓縮文件(核心選項 zxvf)
# 示例1:解壓到當前目錄
tar zxvf data.tar.gz
# 示例2:解壓到指定目錄
tar zxvf docs.tar.gz -C /tmp/docs
# 示例3:僅解壓壓縮文件中的指定文件
tar zxvf backup.tar.gz home/centos/file1.txt
3.2 bzip2 壓縮/解壓(.tar.bz2 格式)
使用 j 選項結(jié)合 bzip2 算法,壓縮率比 gzip 更高,但壓縮速度稍慢,適合對體積要求嚴格的場景。
# 打包并壓縮(核心選項 jcvf)
# 示例:壓縮大目錄(生成 large_data.tar.bz2)
tar jcvf large_data.tar.bz2 /var/log
# 查看壓縮文件內(nèi)容(核心選項 jtvf)
tar jtvf large_data.tar.bz2
# 解壓壓縮文件(核心選項 jxvf)
# 示例1:解壓到當前目錄
tar jxvf large_data.tar.bz2
# 示例2:靜默解壓(不顯示詳細信息,僅用 jxf)
tar jxf large_data.tar.bz2 -C /tmp/logs
4 特殊場景:實用操作技巧
針對運維中的特殊需求,tar 命令有多個實用技巧,可提升工作效率。
4.1 打包時保留文件權(quán)限
使用 p 選項(preserve),打包時保留文件的原始權(quán)限(如執(zhí)行權(quán)限、所有者信息),適合系統(tǒng)配置文件備份。
# 備份 /etc 目錄并保留權(quán)限
tar zcvfp etc_backup.tar.gz /etc
# 解壓時也會恢復(fù)原始權(quán)限
tar zxvfp etc_backup.tar.gz -C /tmp/etc_restore
4.2 增量打包(僅打包更新文件)
使用N 選項,僅打包指定時間點之后更新的文件,減少備份體積和時間。
# 僅打包 2025-12-18 之后更新的文件
tar zcvf incr_backup.tar.gz -N "2025-12-18" /home/centos/data
4.3 壓縮大文件時拆分體積
結(jié)合 split 命令,將大壓縮文件拆分為指定大小的小文件,便于存儲到多個設(shè)備或網(wǎng)絡(luò)傳輸。
# 步驟1:生成大壓縮文件
tar zcvf large.tar.gz /var/data
# 步驟2:拆分為每個 500MB 的小文件(生成 large.tar.gz.aa、ab 等)
split -b 500M large.tar.gz large.tar.gz.
# 步驟3:合并拆分的文件(傳輸后恢復(fù)為原文件)
cat large.tar.gz.a* > large.tar.gz
# 步驟4:解壓恢復(fù)
tar zxvf large.tar.gz
4.4 從壓縮文件中提取單個目錄
無需解壓整個文件,僅提取所需目錄,節(jié)省時間和空間。
# 從 backup.tar.gz 中僅提取 /home/centos/docs 目錄
tar zxvf backup.tar.gz home/centos/docs
5 操作注意事項
選項順序:f 選項必須放在最后,因為它后面需要緊跟文件名(如 tar cvf file.tar dir/ 正確,tar fcv dir/ file.tar 錯誤)。
絕對路徑問題:打包絕對路徑目錄(如 /home/centos)時,解壓后會保留完整路徑;若想以相對路徑打包,可先切換到目標目錄再操作(如 cd /home && tar cvf centos.tar centos/)。
空間檢查:壓縮大目錄前,先通過 df -h 檢查目標分區(qū)剩余空間,避免空間不足導(dǎo)致操作失敗。
特殊字符處理:若文件/目錄名包含空格或特殊字符,需用引號包裹(如 tar cvf "my file.tar" "my file.txt")。
6 核心命令速查表
操作需求 | 命令示例 |
打包目錄為 .tar | tar cvf data.tar /home/centos/data |
打包壓縮為 .tar.gz | tar zcvf data.tar.gz /home/centos/data |
打包壓縮為 .tar.bz2 | tar jcvf data.tar.bz2 /var/log |
查看壓縮文件內(nèi)容 | tar ztvf data.tar.gz |
解壓 .tar.gz 到指定目錄 | tar zxvf data.tar.gz -C /tmp/restore |
保留權(quán)限備份配置文件 | tar zcvfp etc.tar.gz /etc |
總結(jié)
藍隊云官網(wǎng)上擁有完善的技術(shù)支持庫可供參考,大家可自行查閱,更多技術(shù)問題,可以直接咨詢。同時,藍隊云整理了運維必備的工具包免費分享給大家使用,包含文件備份腳本、批量壓縮工具等,需要的朋友可以直接咨詢。
更多技術(shù)知識,藍隊云期待與你一起探索。