Linux下ZIP與TAR.GZ的分卷壓縮與解壓縮全指南
前言
在日常工作中,我們經(jīng)常會(huì)遇到大文件或目錄需要壓縮后存儲(chǔ)、傳輸?shù)膱?chǎng)景,而單個(gè)壓縮文件過(guò)大可能會(huì)受到存儲(chǔ)介質(zhì)(如U盤(pán)、網(wǎng)盤(pán))或傳輸工具(如郵件、即時(shí)通訊軟件)的限制。分卷壓縮技術(shù)可以將大文件拆分為多個(gè)小分卷,完美解決這一問(wèn)題。本文將詳細(xì)介紹 Linux 系統(tǒng)中最常用的兩種壓縮格式——ZIP 和 TAR.GZ 的分卷壓縮與解壓縮方法,適合各類場(chǎng)景下的大文件處理需求。
一、分卷壓縮的核心價(jià)值
分卷壓縮(Split Compression)是將一個(gè)大文件或目錄拆分為多個(gè)指定大小的小文件的技術(shù),核心優(yōu)勢(shì)包括:
- 突破存儲(chǔ)限制:解決單個(gè)文件超過(guò)U盤(pán)、光盤(pán)等介質(zhì)容量的問(wèn)題;
- 便于傳輸:避免因單個(gè)文件過(guò)大導(dǎo)致郵件附件拒收、傳輸中斷等問(wèn)題;
- 靈活管理:分卷文件可單獨(dú)復(fù)制、備份,某一分卷?yè)p壞時(shí)只需重新傳輸該分卷。
Linux 系統(tǒng)中,ZIP 和 TAR.GZ 是最常用的兩種壓縮格式,前者跨平臺(tái)兼容性強(qiáng)(支持 Windows、macOS),后者在 Linux 環(huán)境下壓縮效率更高,下面分別介紹其分卷操作方法。
二、ZIP 格式:跨平臺(tái)分卷的首選
ZIP 是一種廣泛使用的壓縮格式,原生支持分卷功能,分卷文件命名規(guī)則統(tǒng)一,且解壓時(shí)無(wú)需手動(dòng)合并,適合需要跨系統(tǒng)傳輸?shù)膱?chǎng)景。
2.1 分卷壓縮:將文件拆分為指定大小的分卷
使用 zip 命令進(jìn)行分卷壓縮,核心參數(shù)為 -s(指定分卷大?。?,語(yǔ)法如下:
zip -r -s <分卷大小> <輸出分卷前綴>.zip <待壓縮文件/目錄>
-r:遞歸壓縮目錄(若壓縮單個(gè)文件可省略);-s:指定每個(gè)分卷的大小,單位支持k(KB)、m(MB)、g(GB);- 輸出分卷命名規(guī)則:自動(dòng)生成
.z01、.z02….zip(最后一個(gè)分卷為.zip后綴)。
實(shí)戰(zhàn)示例:將 /data/project 目錄分卷壓縮為每個(gè) 100MB 的 ZIP 分卷
# 進(jìn)入目標(biāo)目錄(可選,方便后續(xù)操作) cd /data # 分卷壓縮:遞歸壓縮 project 目錄,每個(gè)分卷100MB,輸出前綴為 project_split zip -r -s 100m project_split.zip project/
執(zhí)行后,目錄下會(huì)生成如下分卷文件:
project_split.z01 # 第1個(gè)分卷 project_split.z02 # 第2個(gè)分卷 ... project_split.zip # 最后一個(gè)分卷(固定為.zip后綴)
2.2 分卷解壓縮:自動(dòng)識(shí)別分卷,一鍵解壓
ZIP 分卷的解壓非常便捷,無(wú)需手動(dòng)合并分卷,只需確保所有分卷在同一目錄,直接解壓最后一個(gè) .zip 分卷即可:
# 解壓分卷(只需指定最后一個(gè).zip文件) unzip project_split.zip
解壓原理:unzip 命令會(huì)自動(dòng)識(shí)別同目錄下的 .z01、.z02 等前置分卷,按順序合并并解壓為原始文件/目錄。
常見(jiàn)問(wèn)題排查:
- 若提示“缺失分卷”:檢查分卷文件名是否連續(xù)(如是否漏了
.z03)、是否有拼寫(xiě)錯(cuò)誤; - 若提示“CRC 錯(cuò)誤”:可能分卷文件損壞,需重新獲取完整分卷。
三、TAR.GZ 格式:Linux 下的高效壓縮方案
TAR.GZ 是 Linux 系統(tǒng)中最常用的壓縮格式(由 tar 命令打包 + gzip 壓縮),雖然原生不支持分卷,但可通過(guò) split 命令實(shí)現(xiàn)分卷,壓縮率通常高于 ZIP,適合純 Linux 環(huán)境下的文件處理。
3.1 分卷壓縮:結(jié)合 tar 與 split 實(shí)現(xiàn)拆分
TAR.GZ 分卷壓縮需兩步:先通過(guò) tar 生成壓縮包,再用 split 命令拆分為指定大小的分卷,語(yǔ)法如下:
tar -zcvf - <待壓縮文件/目錄> | split -b <分卷大小> - <輸出分卷前綴>.tar.gz.
tar -zcvf -:-z啟用 gzip 壓縮,-c創(chuàng)建歸檔,-v顯示過(guò)程,-表示輸出到標(biāo)準(zhǔn)輸出(而非直接生成文件);split -b:-b指定分卷大?。▎挝煌?ZIP,支持k/m/g),-表示從標(biāo)準(zhǔn)輸入讀取數(shù)據(jù);- 輸出分卷命名規(guī)則:默認(rèn)以
.aa、.ab、.ac… 為后綴(可通過(guò)-d參數(shù)指定數(shù)字后綴,如.00、.01)。
實(shí)戰(zhàn)示例:將 /data/logs 目錄分卷壓縮為每個(gè) 500MB 的 TAR.GZ 分卷
# 壓縮并分卷,分卷前綴為 logs_split,每個(gè)分卷500MB tar -zcvf - /data/logs | split -b 500m - logs_split.tar.gz.
執(zhí)行后,生成的分卷文件如下:
logs_split.tar.gz.aa # 第1個(gè)分卷 logs_split.tar.gz.ab # 第2個(gè)分卷 logs_split.tar.gz.ac # 第3個(gè)分卷(若總大小超過(guò)1GB) ...
進(jìn)階技巧:使用數(shù)字后綴替代字母后綴(更直觀)
# 添加 -d 參數(shù)使用數(shù)字后綴,-a 2 指定后綴位數(shù)(如00、01) tar -zcvf - /data/logs | split -b 500m -d -a 2 - logs_split.tar.gz. # 生成分卷:logs_split.tar.gz.00、logs_split.tar.gz.01、...
3.2 分卷解壓縮:先合并分卷,再解壓
TAR.GZ 分卷解壓需先將所有分卷合并為完整的 TAR.GZ 文件,再執(zhí)行解壓,步驟如下:
步驟1:合并分卷
使用 cat 命令按分卷順序合并(字母后綴按 aa→ab→ac,數(shù)字后綴按 00→01→02):
# 合并字母后綴分卷(*匹配所有分卷) cat logs_split.tar.gz.a* > logs_merged.tar.gz # 若為數(shù)字后綴(如00、01),使用: cat logs_split.tar.gz.0* > logs_merged.tar.gz
步驟2:解壓合并后的文件
使用 tar 命令解壓合并后的完整文件:
# 解壓合并后的 TAR.GZ 文件 tar -zxvf logs_merged.tar.gz
合并原理:cat 命令將多個(gè)分卷文件按順序拼接為一個(gè)完整文件,確保原始?jí)嚎s包的完整性。
四、ZIP 與 TAR.GZ 分卷方案對(duì)比
為幫助大家選擇合適的分卷方案,下表對(duì)比兩種格式的核心差異:
| 特性 | ZIP 分卷 | TAR.GZ 分卷 |
|---|---|---|
| 跨平臺(tái)兼容性 | 優(yōu)秀(支持 Windows、macOS、Linux) | 一般(Windows 需第三方工具如 7-Zip) |
| 壓縮率 | 中等 | 較高(同等文件體積更?。?/td> |
| 分卷命名規(guī)則 | .z01、.z02….zip | .aa/.00、.ab/.01…(自定義) |
| 解壓步驟 | 直接解壓最后一個(gè) .zip 分卷 | 先合并分卷,再解壓 |
| 支持加密 | 支持(-e 參數(shù)) | 不原生支持(需額外加密工具) |
| 適合場(chǎng)景 | 跨系統(tǒng)傳輸、需簡(jiǎn)單操作的場(chǎng)景 | Linux 內(nèi)部文件管理、追求高壓縮率場(chǎng)景 |
五、避坑指南與最佳實(shí)踐
分卷大小合理設(shè)置
分卷大小建議參考存儲(chǔ)介質(zhì)的單文件限制(如 FAT32 格式 U 盤(pán)單文件最大 4GB),或傳輸工具的限制(如郵件附件單文件最大 25MB),避免分卷本身仍超過(guò)限制。
分卷完整性校驗(yàn)
壓縮后建議記錄分卷數(shù)量和每個(gè)分卷的 MD5 哈希值,傳輸后通過(guò) md5sum 命令校驗(yàn),確保分卷未損壞:
# 生成分卷 MD5 校驗(yàn)文件 md5sum logs_split.tar.gz.a* > split_checksum.md5 # 傳輸后校驗(yàn) md5sum -c split_checksum.md5
批量處理大目錄
若需壓縮包含大量小文件的目錄,建議先清理無(wú)用文件(rm 或 find 命令),再執(zhí)行分卷壓縮,減少壓縮包體積和分卷數(shù)量。
避免特殊字符
待壓縮文件/目錄名避免包含空格、中文或特殊符號(hào)(如 !、$),否則可能導(dǎo)致分卷或解壓失敗,建議重命名為英文+數(shù)字格式。
以上就是Linux下ZIP與TAR.GZ的分卷壓縮與解壓縮全指南的詳細(xì)內(nèi)容,更多關(guān)于Linux ZIP與TAR.GZ分卷壓縮與解壓縮的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
centos安裝jdk1.8時(shí)出現(xiàn)沒(méi)有/lib/ld-linux.so.2:這個(gè)文件的原因分析
這篇文章主要介紹了centos安裝jdk1.8時(shí)出現(xiàn)沒(méi)有/lib/ld-linux.so.2:這個(gè)文件的原因分析,通過(guò)使用一個(gè)簡(jiǎn)單的命令可以幫助我們解決,需要的朋友跟隨腳本之家小編一起看看吧2018-08-08
用rsync對(duì)網(wǎng)站進(jìn)行鏡像備份實(shí)現(xiàn)步驟
對(duì)系統(tǒng)管理員來(lái)說(shuō),平時(shí)的工作重心應(yīng)該集中在維護(hù)系統(tǒng)正常運(yùn)轉(zhuǎn),能夠正常提供服務(wù)上,這里往往牽涉到一個(gè)數(shù)據(jù)備份的問(wèn)題2009-03-03
Linux編譯優(yōu)化必須掌握的幾個(gè)姿勢(shì)總結(jié)
內(nèi)核是操作系統(tǒng)的核心,也是操作系統(tǒng)最基本的部分。下面這篇文章主要給大家總結(jié)介紹了關(guān)于Linux編譯優(yōu)化必須掌握的幾個(gè)姿勢(shì),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09
淺析在 RHEL8 配置靜態(tài) IP 地址的不同方法
如果一個(gè)人在 Linux 服務(wù)器上正確配置了靜態(tài)地址,那么他/她就可以通過(guò)網(wǎng)絡(luò)遠(yuǎn)程訪問(wèn)它。在本文中,我們將演示在 RHEL 8 服務(wù)器網(wǎng)卡上配置靜態(tài) IP 地址的不同方法,需要的朋友可以參考下2019-09-09
詳解centos7 下雙網(wǎng)卡如何配置靜態(tài)IP
這篇文章主要介紹了詳解centos7 下雙網(wǎng)卡如何配置靜態(tài)IP,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12
Linux如何設(shè)置java.library.path
這篇文章主要介紹了Linux如何設(shè)置java.library.path問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12

