linux常用命令zip linux zip用法



文章插圖
linux常用命令zip linux zip用法

文章插圖
在 Linux 上有不少用于壓縮文件的命令 。最新最有效的一個方法是 xz,但是所有的方法都有節省磁盤空間和維護備份文件供以后使用的優點 。在這篇文章中,我們將比較這些壓縮命令并指出顯著的不同 。
tar
tar 命令不是專門的壓縮命令 。它通常用于將多個文件拉入一個單個的文件中,以便容易地傳輸到另一個系統,或者將文件作為一個相關的組進行備份 。它也提供壓縮的功能,這就很有意義了,附加一個 z 壓縮選項能夠實現壓縮文件 。
當使用 z 選項為 tar 命令附加壓縮過程時,tar 使用 gzip 來進行壓縮 。
就像壓縮一組文件一樣,你可以使用 tar 來壓縮單個文件,盡管這種操作與直接使用 gzip 相比沒有特別的優勢 。要使用 tar 這樣做,只需要使用 tar cfz newtarfile filename 命令來標識要壓縮的文件,就像標識一組文件一樣,像這樣:
$ tar cfz bigfile.tgz bigfile^^||+- 新的文件+- 將被壓縮的文件$ ls -l bigfile*-rw-rw-r-- 1 shs shs 103270400 Apr 16 16:09 bigfile-rw-rw-r-- 1 shs shs 21608325 Apr 16 16:08 bigfile.tgz注意,文件的大小顯著減少了 。
如果你愿意,你可以使用 tar.gz 擴展名,這可能會使文件的特征更加明顯,但是大多數的 Linux 用戶將很可能會意識到與 tgz 的意思是一樣的 – tar 和 gz 的組合來顯示文件是一個壓縮的 tar 文件 。在壓縮完成后,你將同時得到原始文件和壓縮文件 。
要將很多文件收集在一起并在一個命令中壓縮出 “tar ball”,使用相同的語法,但要指定要包含的文件為一組,而不是單個文件 。這里有一個示例:
$ tar cfz bin.tgz bin/*^ ^| +-- 將被包含的文件+ 新的文件zip
zip 命令創建一個壓縮文件,與此同時保留原始文件的完整性 。語法像使用 tar 一樣簡單,只是你必需記住,你的原始文件名稱應該是命令行上的最后一個參數 。
$ zip ./bigfile.zip bigfileupdating: bigfile (deflated 79%)$ ls -l bigfile bigfile.zip-rw-rw-r-- 1 shs shs 103270400 Apr 16 11:18 bigfile-rw-rw-r-- 1 shs shs21606889 Apr 16 11:19 bigfile.zipgzip
gzip 命令非常容易使用 。你只需要鍵入 gzip,緊隨其后的是你想要壓縮的文件名稱 。不像上述描述的命令,gzip 將“就地”“加密”文件 。換句話說,原始文件將被“加密”文件替換 。
$ gzip bigfile$ ls -l bigfile*-rw-rw-r-- 1 shs shs21606751 Apr 15 17:57 bigfile.gzbzip2
像使用 gzip 命令一樣,bzip2 將在你選擇的文件“就地”壓縮,不留下原始文件 。
$ bzip bigfile$ ls -l bigfile*-rw-rw-r-- 1 shs shs18115234 Apr 15 17:57 bigfile.bz2xz
xz 是壓縮命令團隊中的一個相對較新的成員,在壓縮文件的能力方面,它是一個領跑者 。像先前的兩個命令一樣,你只需要將文件名稱提供給命令 。再強調一次,原始文件被就地壓縮 。
$ xz bigfile$ ls -l bigfile*-rw-rw-r-- 1 shs shs 13427236 Apr 15 17:30 bigfile.xz對于大文件來說,你可能會注意到 xz 將比其它的壓縮命令花費更多的運行時間,但是壓縮的結果卻是非常令人贊嘆的 。
對比
大多數人都聽說過“大小不是一切” 。所以,讓我們比較一下文件大小以及一些當你計劃如何壓縮文件時的問題 。
下面顯示的統計數據都與壓縮單個文件相關,在上面顯示的示例中使用 bigfile 。這個文件是一個大的且相當隨機的文本文件 。壓縮率在一定程度上取決于文件的內容 。
大小減縮率
當比較時,上面顯示的各種壓縮命產生下面的結果 。百分比表示壓縮文件與原始文件的比較效果 。
-rw-rw-r-- 1 shs shs 103270400 Apr 16 14:01 bigfile-------------------------------------------------------rw-rw-r-- 1 shs shs 18115234 Apr 16 13:59 bigfile.bz2~17%-rw-rw-r-- 1 shs shs 21606751 Apr 16 14:00 bigfile.gz ~21%-rw-rw-r-- 1 shs shs 21608322 Apr 16 13:59 bigfile.tgz~21%-rw-rw-r-- 1 shs shs 13427236 Apr 16 14:00 bigfile.xz ~13%-rw-rw-r-- 1 shs shs 21606889 Apr 16 13:59 bigfile.zip~21%xz 命令獲勝,最終只有壓縮文件 13% 的大小,但是所有這些壓縮命令都相當顯著地減少原始文件的大小 。
【linux常用命令zip linux zip用法】是否替換原始文件
bzip2、gzip 和 xz 命令都用壓縮文件替換原始文件 。tar 和 zip 命令不替換 。
運行時間
xz 命令似乎比其它命令需要花費更多的時間來“加密”文件 。對于 bigfile 來說,大概的時間是:
命令運行時間tar 4.9 秒zip 5.2 秒bzip222.8 秒gzip4.8 秒xz 50.4 秒解壓縮文件很可能比壓縮時間要短得多 。
文件權限
不管你對壓縮文件設置什么權限,壓縮文件的權限將基于你的 umask 設置,但 bzip2 除外,它保留了原始文件的權限 。
與 Windows 的兼容性
zip 命令創建的文件可以在 Windows 系統以及 Linux 和其他 Unix 系統上使用(即解壓),而無需安裝其他工具,無論這些工具可能是可用還是不可用的 。
解壓縮文件
解壓文件的命令與壓縮文件的命令類似 。在我們運行上述壓縮命令后,這些命令用于解壓縮 bigfile:
tar: tar xf bigfile.tgzzip: unzip bigfile.zipgzip: gunzip bigfile.gzbzip2: bunzip2 bigfile.gz2xz: xz -d bigfile.xz 或 unxz bigfile.xz自己運行壓縮對比
如果你想自己運行一些測試,抓取一個大的且可以替換的文件,并使用上面顯示的每個命令來壓縮它 —— 最好使用一個新的子目錄 。你可能需要先安裝 xz,如果你想在測試中包含它的話 。這個腳本可能更容易地進行壓縮,但是可能需要花費幾分鐘完成 。
#!/bin/bash# 詢問用戶文件名稱echo -n "filename> "read filename# 你需要這個,因為一些命令將替換原始文件cp $filename $filename-2# 先清理(以免先前的結果仍然可用)rm $filename.*tar cvfz ./$filename.tgz $filename > /dev/nullzip $filename.zip $filename > /dev/nullbzip2 $filename# 恢復原始文件cp $filename-2 $filenamegzip $filename# 恢復原始文件cp $filename-2 $filenamexz $filename# 顯示結果ls -l $filename.*# 替換原始文件mv $filename-2 $filename