CodeGym /Adesua ahorow /Docker SELF /檔案壓縮與打包:命令 `tar`、`gzip`、`zip`

檔案壓縮與打包:命令 `tar`、`gzip`、`zip`

Docker SELF
等級 6 , 課堂 4
開放

檔案壓縮與打包:命令 targzipzip

1. 打包與壓縮的概念

什麼是打包,這為什麼很重要?

想像一下有個滿是書的大櫃子。為了更緊湊地保存它們,你可能會把它們放進一個盒子裡(打包),然後用繩子綁起來讓它們更緊密(壓縮)。在電腦的世界中,「打包」是指將多個檔案合併成一個容器(壓縮包),而「壓縮」則是減小它的容量大小。

那為什麼需要這樣做呢?來看看這些例子:

  • 資料存儲:把檔案封裝成壓縮包,你就可以像處理一個檔案一樣輕鬆移動或複製它們。
  • 資料傳輸:通過壓縮,資料占用的空間更小,這會加速網絡傳輸速度。
  • 備份:打包擁有保護資料的功能,並且也更方便進行恢復。

順便說一下,你有試過用電子郵件傳送 1000 個檔案嗎?沒有打包的話,這更像是自虐啊!


2. 指令 tar:創建和操作存檔

什麼是 tar?

tar 是 Linux 裡一個用來存檔文件的工具。嚴格來說,tar 並不壓縮文件,它只是把多個文件合併成一個存檔。如果你需要壓縮文件,可以配合壓縮工具使用(例如 gzip, bzip2 等)。

一般語法

tar [選項] <存檔> <文件/文件夾>

主要選項

  • -c: 創建新的存檔。
  • -v: 詳細輸出操作(告訴你有哪些文件被添加)。
  • -f: 指定存檔名稱。
  • -x: 從存檔中提取文件。
  • -t: 顯示存檔內容。

使用範例

1. 創建存檔

tar -cvf archive.tar file1.txt file2.txt
  • 從兩個文件 file1.txtfile2.txt 創建存檔 archive.tar
  • -c: 創建新的存檔。
  • -v: 在終端顯示添加文件的全過程。
  • -f: 指定存檔名稱為 archive.tar

2. 打包文件夾

tar -cvf project.tar /home/user/project
  • 創建存檔 project.tar,包含整個文件夾 /home/user/project

3. 解壓存檔

tar -xvf archive.tar
  • 將存檔 archive.tar 內的文件提取到當前目錄。

4. 查看存檔內容

tar -tvf archive.tar
  • 顯示存檔裡的文件和文件夾列表。

3. 使用 gzip 壓縮

gzip 是什麼?

如果說 tar 是一個盒子,那麼 gzip 就是用來減少它大小的真空包裝。gzip 使用壓縮算法來減少數據大小,這使它成為節省空間的理想工具。

一般語法

gzip [選項] <檔案>

使用範例

1. 壓縮檔案

gzip file1.txt
  • 執行後,指令會將檔案 file1.txt 更改為 file1.txt.gz

2. 解壓縮檔案

gunzip file1.txt.gz
  • 還原出原始檔案 file1.txt

3. 使用 targzip 進行檔案歸檔與壓縮

tar -czvf archive.tar.gz file1.txt file2.txt
  • 建立一個名為 archive.tar.gz 的壓縮檔案,裡面包括檔案 file1.txtfile2.txt

4. 解壓縮壓縮檔案

tar -xzvf archive.tar.gz
  • 解壓縮並提取壓縮檔案 archive.tar.gz 的內容。

4. 使用 zip 工具來創建壓縮檔案

tar 有什麼不同?

tar 不同的是,zip 直接創建壓縮的檔案,默認情況下可以在 Windows 和其他系統中使用。

一般語法

zip [選項] <檔案名> <文件/目錄>

使用範例

1. 創建 zip 壓縮檔案

zip archive.zip file1.txt file2.txt
  • 創建檔案 archive.zip,包含文件 file1.txtfile2.txt

2. 打包目錄

zip -r project.zip /home/user/project
  • 創建檔案 project.zip,包含整個目錄 /home/user/project
  • -r: 遞歸添加文件和目錄。

3. 解壓 zip 壓縮檔案

unzip archive.zip
  • 提取壓縮檔案 archive.zip 的內容。

5. targzipzip 的區別

工具 封裝 壓縮 方式 主要用途
tar 封裝檔案 僅將檔案合併為未壓縮的封裝
gzip 壓縮 減小單個檔案或封裝的大小
zip 一體化 製作可移動封裝

6. 實操任務

  1. 創建文件夾 /home/user/documents 的存檔 backup.tar
  2. 使用 gzip 壓縮存檔,生成 backup.tar.gz
  3. 把存檔提取到另一個目錄,比如 /tmp/backup
  4. 從文件 doc1.txtdoc2.txt 創建一個 zip 壓縮包 docs.zip
  5. 嘗試使用命令 unzip 提取 docs.zip 的內容。

7. 常見錯誤與特性

1. 錯誤 "Permission denied" 如果你嘗試打包限制存取權限的檔案,會遇到錯誤訊息。用管理員權限執行指令:sudo

2. 被選項弄糊塗了? tar 的選項有時候會讓人頭暈,別忘了順序很重要:比方說,先指定動作 -c-x,然後再加其他選項。

3. 壓縮檔無法打開 如果不小心對已經壓縮的檔案再次壓縮(比如 gzip archive.tar.gz),不用擔心。只要解壓兩次就好了。

4. 壓縮檔太大 在使用 zip 指令時,可以排除暫存檔或快取,讓壓縮檔更小:zip -r archive.zip folder -x "*.tmp"

5. 相容性問題 如果需要把檔案傳送給 Windows 使用者,建議選用 zip 因為它在該系統中有更好的支援。

這樣我們就掌握了在 Linux 裡進行檔案壓縮與打包的技巧啦!這些工具會幫助你更輕鬆地處理大量數據、進行傳輸以及避免數據遺失。繼續下一個主題吧,你的知識只會越來越多!🎉

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION