← Back to list

[Linux]檔案壓縮與解壓縮(zip、unzip、gzip、gunzip)

這次想跟分享的是如何在 Linux 環境中來執行壓縮及解壓縮。

Chacha · 2025-06-20 08:04 · 0 claps · 7.0 min read
#linux #linux-commands #zip #unzip #chachalearn
Open on Medium ↗
Wiki topics: 🔓 · Open Source 🥊 · Combat Sports

[Linux]檔案壓縮與解壓縮(zip、unzip、gzip、gunzip)

zip、unzip、gzip、gunzip

zip、unzip、gzip、gunzip

這次想跟分享的是如何在 Linux 環境中來執行壓縮及解壓縮。

我們在日常開發與運維工作中,我們時常需要對大型專案或資料夾進行備份、傳輸或歸檔等。若在執行動作之前未先將目標進行壓縮,會花費大量的磁碟空間及傳輸頻寬,所需的完成的時間就較長。

在遇到這種情況時,我們通常會先將檔案進行壓縮,再來對目標進行其他動作,這樣我們所花費的時間相較之下會比較少,且也可以更有效的利用我們主機的存儲及傳輸空間,接下來就讓我來介紹要透過那些指令且如何執行吧

壓縮

壓縮(Compression)是將指定檔案或資料,透過特定演算法做處理,來縮小檔案的大小打包整理的技術。以下來介紹壓縮時會使用到指令

zip

zip指令是用來壓縮多個檔案或資料夾的指令,zip是一套廣泛應用於多平台的壓縮工具,它通常不預設安裝在我們的 Linux 中,因此使用前我們可以先透過套件管理器安裝,根據不同的 Linux 發行版,安裝方式如下:

sudo apt install zip      # Debian/Ubuntu 系列
sudo yum install zip      # RHEL/CentOS

確認安裝完成後,我們即可使用 zip 指令進行壓縮操作。以下是使用指令的基本語法

zip [option] output.zip file1.txt file2.txt ...
    -參數     -輸出檔名   -檔案1     -檔案2

常用參數

  • -r:遞迴壓縮,若檔案選擇是資料夾,則壓縮整個資料夾
  • -q:安靜模式,不顯示細節
  • -v:詳細模式,顯示所有細節
  • -e:為壓縮檔案加入壓縮密碼
  • -0 ~-9:指定壓縮級別,0表示不壓縮,9表示最高壓縮率,預設為 6

使用範例

// 壓縮多筆資料夾
zip -r example.zip /home/chacha/example1/ /home/chacha/example2/

// 壓縮多筆檔案
zip out-example.zip file1.txt file2.pdf

// 假入檔案壓縮密碼
zip -e secret-example.zip secret-example.txt   # 在進入壓縮交互介面時加密

gzip

gzip 指令是用來壓縮單一檔案,屬於輕量且快速的壓縮工具,常見於 Unix/Linux 系統。

而與 zip 不同的是,gzip 只能壓縮單一檔案,若要壓縮整個資料夾通常會搭配另一個指令 - tar 做使用。在大多數 Linux 發行版中,gzip 通常預設已安裝,如未安裝我們可以使用以下方式進行安裝:

sudo apt install gzip      # Debian/Ubuntu 系列  
sudo yum install gzip      # RHEL/CentOS

確認安裝完成後,即可使用 gzip 進行壓縮操作。以下是其基本語法

gzip [option] file
     -參數     -檔案1

在執行完壓後會產生壓縮檔 file.txt.gz,在預設情況下,我們一開始所選去的壓縮原始檔案會被自動刪除。

常用參數

  • -k:壓縮完成時會保留原始檔案
  • -v:顯示壓縮時的細節
  • -d:解壓縮檔案
  • -l:查看 .gz 檔案內部壓縮資訊
  • -0 ~-9:指定壓縮級別,0表示不壓縮,9表示最高壓縮率(預設為 6)

使用範例

// 不帶入參數壓縮檔案,會刪除原始檔案
gzip mylog.txt

// 壓縮後保留原始檔案
gzip -k mylog.txt 

// 解壓縮 .gz 檔案
gzip -d mylog.txt.gz 

// 查看壓縮檔資訊(未解壓)
gzip -l mylog.txt.gz

解壓縮

解壓縮是壓縮流程的另一個重要步驟,指的是將壓縮後的檔案,還原為原本的檔案或資料夾結構。

壓縮檔的內容通常是為了儲存與傳輸而優化過的格式,對人類來說無法直接閱讀或使用。因此當我們需要檢視、編輯或使用檔案時,必定要先進行解壓縮將其還原為原始格式。以下來介紹壓縮時會使用到指令。

unzip

unzip 指令是專門用來解壓 .zip 壓縮檔案的工具,通常會與 zip 搭配使用。與 zip 相同,他是目前最常見、跨平台通用的壓縮格式。在某些 Linux 發行版中也不預設安裝,因此可先依照指令,在相對應的系統版本使用下列方式進行安裝:

sudo apt install unzip      # Debian/Ubuntu 系列  
sudo yum install unzip      # RHEL/CentOS

安裝完成後即可使用 unzip 來解壓縮 .zip 檔案。

unzip [option] file.zip
      -參數     -壓縮檔案

常用參數

  • -d:指定解壓縮的目的路徑
  • -o:自動覆蓋已存在的檔案
  • -l:列出壓縮檔案清單,不進行解壓縮
  • -q:不顯示解壓縮細節
  • -n:不覆蓋任何已存在或重複名稱的檔案

使用範例

// 解壓縮壓縮檔
unzip archive.zip

// 解壓縮到指定資料夾
unzip archive.zip -d /home/chacha/output/

// 自動覆蓋已存在的檔案(無提示)
unzip -o archive.zip

// 顯示 zip 檔案內的檔案清單(不解壓)
unzip -l archive.zip

// 解壓縮時不覆蓋現有檔案
unzip -n archive.zip

gunzip

gunzip 指令是用來解壓 .gz 檔案的指令,通常會與 gzip 搭配做使用。由於 gzip 只能壓縮單一檔案,因此透過 gunzip 可以將 .gz 壓縮檔恢復成原始檔案。在大部分的 Linux 發行版中,gunzip 隨著我們安裝 gzip 套件時會一併安裝,安裝指令可以參考 gzip ,確認安裝完成後,即可使用 gunzip 解壓 .gz 壓縮檔案。

gunzip [option] file.gz
       -參數     -壓縮檔案

注意,我們在完成解壓縮後會恢復成 file.txt,並且壓縮檔會被刪除。

使用參數

  • -k:解壓縮完成後保留原始壓縮檔案
  • -v:顯示詳細解壓縮過程
  • -c:將解壓後內容輸出到標準輸出(僅顯示)
  • -f:強制解壓,即使檔案存在也直接覆蓋

使用範例

// 解壓縮 .gz 檔案
gunzip logfile.txt.gz          # 解壓後為 logfile.txt 並刪除原始 logfile.txt.gz

// 解壓縮並保留 .gz 壓縮檔
gunzip -k logfile.txt.gz

// 顯示解壓過程
gunzip -v logfile.txt.gz

// 將解壓內容輸出到螢幕
gunzip -c logfile.txt.gz

// 強制解壓,即使原始檔已存在也覆蓋
gunzip -f logfile.txt.gz

Zip V.S Gzip

以下是將兩個指令做比較整理

  • 支援多檔壓縮 zip:可直接壓縮多個檔案或整個資料夾,也可使用 -r 遞迴處理子資料夾。 gzip:僅能壓縮單一檔案。
  • 保留原始檔案 zip:預設會保留原始檔案。 gzip:預設會刪除原始檔案,若需保留,需額外輸入參數。
  • 支援加密壓縮 zip:支援基本密碼保護功能 gzip:不支援加密壓縮功能
  • 跨平台使用 zip:支援度高,是跨平台標準格式。 gzip:雖然 .gz 也是 Linux 系統常用格式,但也有其他操作系統中,會使用不同的工具來讀取相關檔案

建議使用情境

  • 若在使用中僅需要壓縮單一大型檔案,此時使用使用 gzip 即可
  • 若想要對整個專案資料夾進行壓縮、並與其他平台共享,建議使用 zip -r 的遞迴功能
  • 在正式解壓縮檔案前,可以透過參數的使用,預先查看是否是你要解壓縮的檔案,避免解壓縮檔案錯誤占用多於存儲空間
  • 若是需要跨平台操作檔案,建議使用 zip 來完成任務支援度較高

平常主要使用 Windows 的操作系統,已經相當習慣視覺化操作介面中進行壓縮傳遞檔案,有時甚至會懶得壓縮直接進行轉移😂。

但當我在工作環境中開始接觸使用到雲端服務後,操作系統都是使用 Linux 系統。對於雲服務來說,存儲空間及檔案傳輸流量都算是一筆額外開銷,且根據使用的服務等級,相較於本地所花費的時間也是相當多。

因此透過壓縮來完成大檔案及專案的傳輸就至關重要,在完成學習後對我在工作上的帶來了許多幫助,省下了時間跟空間可以處理更多事情,所以在各位使用原端服務時,部論是哪個操作系統,都推薦大家可以繼續深入學習使用壓縮的技巧。

今天的分享就到這裡,期待下次再和大家一起學習成長,我們下篇學習文章建 🙌

參考資料: [1]菜鳥教程:Linux zip 命令Linux gzip 命令 [2]How to Install Zip and Unzip in Linux


메타데이터
post_id
fc2ef909667b
slug
linux-檔案壓縮與解壓-zip-unzip-gzip-gunzip-fc2ef909667b
url
https://medium.com/@chacha0519/linux-%E6%AA%94%E6%A1%88%E5%A3%93%E7%B8%AE%E8%88%87%E8%A7%A3%E5%A3%93-zip-unzip-gzip-gunzip-fc2ef909667b
canonical_url
https://medium.com/@chacha0519/linux-%E6%AA%94%E6%A1%88%E5%A3%93%E7%B8%AE%E8%88%87%E8%A7%A3%E5%A3%93-zip-unzip-gzip-gunzip-fc2ef909667b
author_url
https://medium.com/@chacha0519
status
ok
fetched_at
2026-07-19 09:02:31