zip 命令的解釋與示例
這篇文章是 Linux 命令學習系列的一部分。
zip 文件是一個包含一個或多個文件的壓縮檔案。它作為一種無損數據壓縮技術被廣泛使用。由於壓縮,它佔用的磁碟空間更少,在計算機網路上傳輸時需要的數據也更少。
這些壓縮文件可以在 Linux、Windows 和 macOS 中輕鬆提取。有各種支持壓縮 zip 文件的軟體,也提供提取它們的功能。
由於它很流行,幾乎所有的操作系統都內置了這個功能。
在本教程中,我們將談論幾種基於終端的方法來壓縮 Linux 中的文件。
Linux 中的 Zip 命令示例
語法
在 Linux 中,你需要使用的壓縮文件的程序名稱是 zip
。下面是基本的語法:
zip [壓縮文件名] file1 file2 file3
以下是正式的語法:
zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]
理想情況下,zip
命令應該被安裝在所有主流的 Linux 發行版中。如果沒有,使用下面的命令來安裝它。
在 Debian、Ubuntu 和相關發行版上安裝
sudo apt install zip
在 Fedora、基於 RHEL 的系統上安裝
sudo dnf install zip
在 Arch Linux 上安裝
pacman -S zip
讓我們繼續看一些例子。
如何壓縮文件和文件夾
我的測試目錄中有以下三個文件。它們是 file1.txt
、file2.txt
和 file3.txt
。如果我想用 zip 壓縮三個文件,並創建一個 myfiles.zip
的壓縮包,用下面的命令就可以了。
zip myfiles.zip file1.txt file2.txt file3.mp3
輸出:
adding: file1.txt (stored 0%)
adding: file2.txt (stored 0%)
adding: file3.mp3 (deflated 13%)
這裡你應該記住幾個要點。
- 當創建一個 zip 文件時,你應該有對當前目錄的修改許可權。
- zip 文件格式不包含許可權,即讀(4)、寫(2),和執行(1)。所以,創建該文件的用戶成為該文件的所有者。
- 如果你想使用帶有許可權的 zip,可以嘗試使用
tar
命令(將在後面的教程中解釋)。 - 在上面的輸出中,
zip
命令顯示了被添加到存檔中的文件名和壓縮方法。 - 在目標文件名中指定 .zip 文件名的擴展名並不是必須的。如果你省略了 .zip,
zip
會在最後加上 .zip。
當你操作成百上千的文件時,為了減少終端中的輸出,你可以使用 -q
參數來抑制 zip
命令中的輸出:
zip -q myfiles.zip file1.txt file2.txt file3.txt
遞歸壓縮子文件夾
zip
命令的 -r
選項使你能夠囊括所有子目錄。這個選項會遞歸地遍歷到一個目錄結構的最後一個子目錄,並將它們全部加入到壓縮文件中。
下面的命令創建了一個包含 my_folder
內所有內容和子目錄的壓縮文件:
zip -r myfolder.zip my_folder
你也可以使用通配符(*
)在你的壓縮文件中包含特定類型的文件:
zip -0 my_movies.zip *.mp4
混合添加文件和目錄到壓縮文件
有了以上所有的選項,zip
命令允許你把文件和目錄一起作為參數指定。
zip -r myfiles.zip file1.txt file2.txt file3.txt my_folder1 my_folder2
壓縮演算法
zip 壓縮的默認輸出包含兩個不同的詞,即 deflate
和 store
。zip 默認使用的壓縮方法是 deflate
。如果它成功地壓縮了文件,那麼輸出顯示 deflate
。而當它不能壓縮一個文件時,它只是將它們原封不動地存儲在 .zip 文件中。這些文件的輸出顯示為 store
。
目前有許多壓縮演算法。其中一種是 bzip2 壓縮法,在 Linux 中的 zip
命令支持它。你可以指定壓縮演算法作為一個命令選項來使用。使用選項 -Z
,後面跟上演算法名稱,如下所示:
zip -r -Z bzip2 myfolder.zip my_folder
壓縮級別
zip
命令還允許你指定壓縮級別。壓縮級別是指你想讓 zip 優化多少來減少包的大小。它是一個從 0 到 9 的數值範圍。壓縮級別為 9 的值是最高的壓縮。默認值是 6。
記住,如果你用 zip 壓縮成千上萬個大小不一的文件,它可能會佔用較多的系統資源,並花費大量的時間。所以,如果你在程序中使用它,或者用 shell 腳本處理大量的文件,請遵循正確的編程標準。
zip -9 -r myfolder.zip my_folder
用密碼保護一個壓縮文件
你也可以用下面的 -e
選項對壓縮文件進行密碼保護:
zip -e -r myfolder.zip my_folder
運行該命令後,它將要求輸入密碼。
注意。盡量不要使用 zip 命令來對壓縮文件進行密碼保護。zip 的加密演算法是使用流式加密的 PKZIP。而它很容易被破解。如果你想保護你的文件,請使用 7-Zip 或其他高級工具。
分割較大的壓縮文件
許多應用程序、伺服器和文件共享可能包含固定大小的文件上傳限制。例如,你有一個 10GB 的文件,但服務只允許每個文件 1GB。使用 zip
的 -s
選項,你可以將其壓縮並分割成幾塊進行上傳。
zip -s 1g -r myfolder.zip my_folder
總結
你學到了一些 zip
命令的基本知識。它對大多數本地情況很有用,在這些情況下,你需要通過即時壓縮來進行快速備份。然而,對於更高級的選項,你應該使用 7-Zip 或其他命令,我將在接下來的幾篇文章中分享。
同時,你可以在 zip 手冊 中了解更多。
via: https://www.debugpoint.com/zip-command-linux-examples/
作者:Arindam 選題:lkxed 譯者:Chao-zhi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive