[Linux]檔案壓縮與解壓縮(zip、unzip、gzip、gunzip)
這次想跟分享的是如何在 Linux 環境中來執行壓縮及解壓縮。
[Linux]檔案壓縮與解壓縮(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