Linux gzip 命令詳解:從基礎到高級用法

Linux gzip 命令詳解:從基礎到高級用法

在 Linux 系統中,文件壓縮與解壓縮是日常運維和文件管理的常見操作。gzip(GNU Zip)作為一款經典的壓縮工具,憑借其高效的壓縮算法和簡潔的使用方式,成為 Linux 用戶處理文件壓縮的首選工具之一。本文將從命令基礎、語法結構、常用選項、實戰案例到注意事項,全面講解gzip命令的使用方法,幫助新手快速上手,也為資深用戶提供參考。

一、gzip 命令基礎介紹

gzip是 Linux 系統中用于壓縮文件的工具,其核心功能是將單個文件壓縮為.gz格式的壓縮文件,同時默認刪除原始文件(可通過選項保留)。它采用 DEFLATE 壓縮算法(結合 LZ77 和哈夫曼編碼),壓縮率較高,且壓縮速度較快,適用于文本文件、日志文件、源代碼文件等多種類型文件的壓縮。

核心特點:

  1. 單文件壓縮gzip僅支持對單個文件進行壓縮,不支持直接壓縮目錄(需結合tar命令實現目錄壓縮);

  2. 默認刪除原文件:壓縮后默認刪除原始文件,需通過選項顯式保留;

  3. 壓縮后格式:壓縮后的文件擴展名為.gz,例如file.txt壓縮后為file.txt.gz

  4. 解壓縮功能gzip自帶解壓縮功能(無需額外工具),通過選項即可實現.gz文件的解壓縮。

二、gzip 命令語法結構

gzip命令的語法格式簡潔,主要包含選項目標文件 / 目錄兩部分,具體如下:

gzip \[選項] \[文件/目錄]

說明:

  • 選項:控制gzip的壓縮 / 解壓縮行為,如壓縮級別、是否保留原文件、顯示壓縮信息等;

  • 文件 / 目錄:指定需要壓縮或解壓縮的目標。若為目錄,gzip會遞歸壓縮目錄下的所有文件(但不會壓縮目錄本身,僅處理目錄內文件)。

三、gzip 常用選項詳解

gzip的選項較多,以下整理了日常使用中最常用的選項,按功能分類說明:

1. 基礎壓縮 / 解壓縮選項

選項英文全稱功能說明
-d--decompress解壓縮.gz格式文件(等同于gunzip命令)
-c--stdout將壓縮 / 解壓縮結果輸出到標準輸出(不修改原文件,需通過重定向保存)
-k--keep壓縮 / 解壓縮后保留原始文件(默認刪除原文件,此選項非常實用)
-r--recursive遞歸處理目錄下的所有文件(僅壓縮目錄內文件,不壓縮目錄)

2. 壓縮級別控制選項

gzip支持 1-9 共 9 個壓縮級別,級別越高,壓縮率越高,但壓縮速度越慢;級別越低,壓縮速度越快,但壓縮率越低。默認壓縮級別為 6(平衡壓縮率和速度)。

選項壓縮級別特點適用場景
-1-fast1 級壓縮速度最快,壓縮率最低追求速度,對壓縮率要求不高的場景(如臨時文件壓縮)
-6(默認)6 級速度與壓縮率平衡大多數日常壓縮場景
-9-best9 級壓縮率最高,速度最慢追求高壓縮率,不介意耗時的場景(如歸檔備份文件)

3. 信息顯示選項

選項英文全稱功能說明
-l--list顯示.gz壓縮文件的詳細信息(包括原文件大小、壓縮后大小、壓縮率、文件名等)
-v--verbose顯示壓縮 / 解壓縮的詳細過程(如文件名、壓縮率等)

四、gzip 實戰案例

理論結合實踐才能更好地掌握命令用法,以下通過 10 個常見場景的案例,幫助你快速上手gzip

案例 1:基礎壓縮(默認選項)

壓縮單個文件test.txt,默認刪除原文件,生成test.txt.gz

gzip test.txt

執行后,當前目錄下僅保留test.txt.gztest.txt被刪除。

案例 2:壓縮并保留原文件

壓縮test.txt,同時保留原始文件(通過-k選項):

gzip -k test.txt

執行后,當前目錄下同時存在test.txttest.txt.gz

案例 3:指定壓縮級別

以最高壓縮級別(9 級)壓縮log.txt,并顯示壓縮過程(-v):

gzip -9v log.txt

輸出示例:

log.txt:    50.0% -- replaced with log.txt.gz

(表示log.txt壓縮率為 50%,生成log.txt.gz并刪除原文件)

案例 4:解壓縮.gz 文件

解壓縮test.txt.gz,默認刪除壓縮文件,恢復為test.txt

gzip -d test.txt.gz

或使用等效命令gunzip

gunzip test.txt.gz

案例 5:解壓縮并保留壓縮文件

解壓縮test.txt.gz,同時保留壓縮文件(-k):

gzip -dk test.txt.gz

執行后,當前目錄下同時存在test.txttest.txt.gz

案例 6:遞歸壓縮目錄內文件

壓縮data目錄下的所有文件(包括子目錄內的文件),并保留原文件:

gzip -rk data/

執行后,data目錄及其子目錄下的每個文件都會生成對應的.gz壓縮文件,原文件保留。

案例 7:查看壓縮文件信息

查看test.txt.gz的詳細壓縮信息(如原文件大小、壓縮后大小):

gzip -l test.txt.gz

輸出示例:

         compressed        uncompressed  ratio uncompressed\_name                102                204  50.0% test.txt

(含義:壓縮后大小 102 字節,原文件大小 204 字節,壓縮率 50%,原文件名為test.txt

案例 8:壓縮結果輸出到指定文件

test.txt壓縮后的結果輸出到backup/test.gz(不修改原文件,通過-c和重定向):

gzip -c test.txt > backup/test.gz

執行后,test.txt保留,backup/test.gz為壓縮后的文件。

案例 9:批量壓縮多個文件

一次性壓縮當前目錄下所有.log后綴的文件,并保留原文件:

gzip -k \*.log

執行后,每個.log文件都會生成對應的.log.gz文件,原.log文件保留。

案例 10:結合 tar 壓縮目錄

gzip不支持直接壓縮目錄,需結合tar先打包目錄,再用gzip壓縮(即tar.gz格式):

\# 方法1:分步執行(先打包,再壓縮)tar -cf data.tar data/  # 將data目錄打包為data.targzip -k data.tar        # 壓縮data.tar為data.tar.gz,保留原tar包\# 方法2:一步執行(tar直接調用gzip壓縮)tar -zcf data.tar.gz data/  # 打包并壓縮data目錄為data.tar.gz

五、注意事項與常見問題

1. 注意事項

  • 不支持目錄直接壓縮gzip僅能壓縮文件,壓縮目錄需先通過tar打包;

  • 默認刪除原文件:若需保留原文件,必須添加-k選項,避免誤刪重要文件;

  • 壓縮率與文件類型相關:文本文件(如.txt.log)壓縮率較高,二進制文件(如.exe.zip)壓縮率較低(甚至可能變大);

  • .gz文件無法直接修改:需先解壓縮,修改后再重新壓縮。

2. 常見問題

Q1:壓縮后原文件不見了,如何恢復?

A:若未使用-k選項,gzip默認刪除原文件。若文件未被覆蓋,可通過數據恢復工具(如extundelete)嘗試恢復;若已覆蓋,則無法恢復。建議日常使用時添加-k選項。

Q2:如何解壓縮tar.gz格式的文件?

A:tar.gztar打包 +gzip壓縮的格式,解壓縮需先解壓縮再解包:

\# 方法1:分步執行gzip -d data.tar.gz  # 先解壓縮為data.tartar -xf data.tar     # 再解包data.tar\# 方法2:一步執行tar -zxf data.tar.gz  # 直接解壓縮并解包
Q3:壓縮大文件時速度太慢,如何優化?

A:降低壓縮級別(如使用-1),以犧牲部分壓縮率換取更快的速度:

gzip -1v large\_file.txt  # 快速壓縮大文件

六、gzip 相關命令對比

Linux 中還有其他壓縮工具(如bzip2xz),與gzip的對比如下,方便根據需求選擇:

命令壓縮格式壓縮率速度適用場景
gzip.gz中等較快日常文件壓縮、日志壓縮
bzip2.bz2較高較慢對壓縮率要求較高,不介意耗時的場景
xz.xz最高最慢歸檔備份(如系統鏡像、大型數據集)

總結:若追求速度,選gzip;若追求高壓縮率,選xzbzip2為中間選擇。

七、總結

gzip作為 Linux 系統中最常用的壓縮工具之一,掌握其基礎用法(壓縮、解壓縮、保留原文件)和高級技巧(結合tar壓縮目錄、控制壓縮級別),能極大提升文件管理和運維效率。本文通過語法、選項、案例、注意事項的全面講解,希望能幫助你熟練運用gzip命令。

如果在使用過程中遇到其他問題,歡迎在評論區交流討論!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/95554.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/95554.shtml
英文地址,請注明出處:http://en.pswp.cn/web/95554.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Redis有什么優點和缺點?

優點:極致性能: 基于內存操作和高效的單線程 I/O 模型,讀寫速度極快。數據結構豐富: 支持多種數據結構,如 String、Hash、List、Set、ZSet、Stream、Geo 等,編程模型靈活。持久化與高可用: 提供…

NestJS 3 分鐘搭好 MySQL + MongoDB,CRUD 復制粘貼直接運行

基于上一篇內容《為什么現代 Node 后端都選 NestJS TypeScript?這組合真香了》,這篇文章繼續寫數據庫的連接。 所以今天把MySQL、MongoDB全接上,做個小實例。朋友們項目里用什么數據庫可以視情況而定。 這里的功能分別為: MySQ…

用了企業微信 AI 半年,這 5 個功能讓我徹底告別重復勞動

每天上班不是在整理會議紀要,就是在翻聊天記錄找文件,寫文檔還要自己摳數據…… 這些重復勞動是不是也在消耗你的時間?作為用了企業微信 AI 功能半年的 “老用戶”,我必須說:企業微信 AI 的這 5 個功能,真的…

從入門到高手,Linux就應該這樣學【好書推薦】

從入門到高手,請這樣學Linux 一、Linux基礎與終端操作 1.1 Linux簡介 Linux 是一種開源的類 Unix 操作系統,以其穩定性、安全性和高效性被廣泛應用于服務器、嵌入式系統及開發環境中。掌握基本命令和操作技巧是 Linux 學習的關鍵。 1.2 終端基礎 打開…

【數據可視化-104】安徽省2025年上半年GDP數據可視化分析:用Python和Pyecharts打造炫酷大屏

🧑 博主簡介:曾任某智慧城市類企業算法總監,目前在美國市場的物流公司從事高級算法工程師一職,深耕人工智能領域,精通python數據挖掘、可視化、機器學習等,發表過AI相關的專利并多次在AI類比賽中獲獎。CSDN…

組件庫UI自動化

一、背景 背景: 組件庫全局改動場景多,組件之間耦合場景多–時常需要全場景回歸組件庫demo有200多個,手動全局回歸耗時耗力細微偏差純視覺無法辨別 可行性分析: 組件庫功能占比 L1(視覺層):圖片…

面試題:JVM與G1要點總結

一.Java內存區域 1.運行時數據區的介紹 2.站在線程的角度看Java內存區域 3.深入分析堆和棧的區別 4.方法的出入棧和棧上分配、逃逸分析及TLAB 5.虛擬機中的對象創建步驟 6.對象的內存布局 1.運行時數據區的介紹 運行時數據區的類型:程序計數器、Java虛擬機棧、本地方…

車輛安全供電系統開發原則和實踐

摘要在汽車行業中,安全應用的重要性在不斷提升,例如受車輛自動化發展以及機械備用系統重要性降低的影響。為應對這些趨勢,安全相關的電氣和 / 或電子系統(E/E 系統)的電源輸入必須由供電系統來保障,這使得功…

WebSocket客戶端庫:websocket-fruge365

🚀 從零開始打造一個WebSocket客戶端庫:websocket-fruge365 📖 前言 在現代Web開發中,實時通信已經成為不可或缺的功能。無論是聊天應用、實時數據監控,還是在線協作工具,WebSocket都扮演著重要角色。然而…

rocketmq批量執行跑批任務報錯

rocketmq批量執行跑批任務,報下面的錯誤,怎么處理一下呢?是修改配置還是修改代碼還是? org.apache.rocketmq.client.exception.MQBrokerException: CODE: 215 DESC: [FLOW]client has exhausted the send quota for the current …

大語言模型(LLM)簡介與應用分享

1. 什么是大語言模型(LLM) 大語言模型(Large Language Model,簡稱 LLM)是基于 深度學習 和 海量文本數據 訓練而成的人工智能模型。 采用 Transformer 架構參數規模巨大(數十億到數千億)能夠 理…

【算法筆記】選擇排序、插入排序、冒泡排序、二分查找問題

算法的筆記,直接上代碼,思路和問題這些,都在代碼注釋上面 1、工具類 為了生成測試代碼和比較器,專門寫了一個數組工具類,代碼如下: /*** 數組工具類*/ public class ArrUtil {/*** 生成隨機數組* 長度是[0,…

行業分享丨基于SimSolid的大型汽車連續沖壓模具剛度分析

*本文投稿自機械零部件制造業用戶 汽車連續模具的剛度直接決定了沖壓件質量(尺寸精度、表面缺陷)與模具壽命。傳統有限元分析(FEA)在面對大型復雜模具裝配體時,存在網格劃分困難、計算資源消耗大、周期長等瓶頸。本文以…

用AI生成的html頁面設計放到到Axure上實現再改造的方法

要將 AI 生成的 HTML 原型導入 Axure,該方法的核心邏輯是以 Figma 為 “中間橋梁”(因 Axure 無法直接讀取 HTML,需通過 Figma 轉換格式),分 3 步即可完成,以下是詳細操作指南(含每步目標、具體…

從入門到實戰:Linux sed命令全攻略,文本處理效率翻倍

從入門到實戰:Linux sed命令全攻略,文本處理效率翻倍 文章目錄從入門到實戰:Linux sed命令全攻略,文本處理效率翻倍一、認識sed:什么是流編輯器?二、吃透sed工作原理:為什么它能高效處理文本&am…

TIOBE 8月編程語言榜深度解析:Python占比突破26%,Perl成最大黑馬

根據TIOBE最新發布的2025年8月編程語言排行榜,一場靜默的技術變革正在上演:Python以26.14%的占比首次突破26%大關,連續12個月穩居榜首。這一數據不僅刷新了Python自身的歷史紀錄,更成為TIOBE指數自2001年創立以來的最高單語言占比…

從發現到恢復,看瑞數信息如何構建“抗毀重構”實戰路徑

在信息化社會,“韌性”“彈性”這些詞匯常被用來形容系統抵御和應對風險的能力,但對于身處關鍵基礎設施行業的運營者來說,這些概念往往過于抽象,難以直接指導實踐。 相比之下,“抗毀重構”更具畫面感。它不僅是一個管理…

深入理解 jemalloc:從內存分配機制到技術選型

在高性能服務(如數據庫、緩存、JVM)的底層優化中,內存分配效率直接影響系統整體性能。本文將從操作系統底層的malloc機制切入,詳解 jemalloc 的設計理念、開源應用場景、實戰案例,技術選型分析 一、操作系統底層的內存…

websoket使用記錄

1.項目使用記錄1.醫療項目中渲染回收柜溫濕度,需要實時更新2.回收柜安瓿回收和余液回收時,需要前端發送指令給回收柜,比如開門、關門等。還需要收到回收柜結果,比如回收的藥品信息等。我項目中用的是瀏覽器自帶的websoket&#xf…

DevOps篇之通過GitLab CI 流水線實現k8s集群中helm應用發布

一. 設計思路 構建一個 GitLab CI 流水線,并且要集成到 K8s 集群中的 Helm 應用發布流程。首先,需要了解 GitLab CI 的基本結構,比如.gitlab-ci.yml 文件的配置,包括 stages、jobs、變量設置等。然后,結合之前討論的 H…