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