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