Linux——壓縮檔案
為什麼需要壓縮檔案?
檔案在傳輸過程中,可能由于檔案過大,傳輸所需時間過多。減少檔案大小有兩個明顯的好處,一是可以減
少存儲空間,二是通過網絡傳輸檔案時,可以減少傳輸的時間。對于某些不常用檔案,減少它對硬碟空間的
浪費,我們往往會将其壓縮,在需要時再解壓縮。
Linux中有哪些檔案壓縮指令?
在Linux中,提供了許多檔案壓縮指令,針對所需要壓縮的檔案不同,我們可以選用不同的壓縮方式。
壓縮格式:gz bz2 xz zip z
根據不同的壓縮算法,壓縮比也不同。
壓縮指令詳解:
gzip: FILE.gz
gzip不僅可以用來壓縮大的、較少使用的檔案以節省磁盤空間,還可以和tar指令一起構成Linux作業系統中
比較流行的壓縮檔案格式。據統計,gzip指令對文本檔案有60%~70%的壓縮率。
文法格式:gzip 選項 參數
常用選項:
-a或——ascii:使用ASCII文字模式;
-d或--decompress或----uncompress:解開壓縮檔案;
-f或——force:強行壓縮檔案。不理會檔案名稱或硬連接配接是否存在以及該檔案是否為符号連接配接;
-l或——list:列出壓縮檔案的相關資訊;
-n或--no-name:壓縮檔案時,不儲存原來的檔案名稱及時間戳記;
-N或——name:壓縮檔案時,儲存原來的檔案名稱及時間戳記;
-q或——quiet:不顯示警告資訊;
-r或——recursive:遞歸處理,将指定目錄下的所有檔案及子目錄一并處理;
-S或<壓縮字尾字元串>或----suffix<壓縮字尾字元串>:更改壓縮字尾字元串;
-t或——test:測試壓縮檔案是否正确無誤;
-#<壓縮比>:壓縮比是一個介于1~9的數值,預設值為 6 ,指定的數值越大,壓縮效率就會愈高;
--best:此參數的效果和指定“-9”參數相同;
--fast:此參數的效果和指定“-1”參數相同。
[wangml@iZwz976helaylvgqok97prZ scourse]$ ls
passwd
[wangml@iZwz976helaylvgqok97prZ scourse]$ gzip *
[wangml@iZwz976helaylvgqok97prZ scourse]$ ls
passwd.gz
[wangml@iZwz976helaylvgqok97prZ scourse]$ gzip -d *
[wangml@iZwz976helaylvgqok97prZ scourse]$ ls
passwd
預設情況下,源檔案在被壓縮完後會被删除
zcat: 在不解壓的情況下,檢視被gzip壓縮的文本檔案的内容。
bzip2: FILE.bz2
bzip2比gzip有更大的壓縮比,使用格式近似。
文法格式:bzip2 選項 參數
常用選項:
-c或——stdout:将壓縮與解壓縮的結果送到标準輸出;
-d或——decompress:執行解壓縮;
-f或-force:bzip2在壓縮或解壓縮時,若輸出檔案與現有檔案同名,預設不會覆寫現有檔案。若要覆寫。請使用此參數;
-k或——keep:bzip2在壓縮或解壓縮後,會删除原始檔案。若要保留原始檔案,請使用此參數;
-s或——small:降低程式執行時記憶體的使用量;
-v或——verbose:壓縮或解壓縮檔案時,顯示詳細的資訊;
-z或——compress:強制執行壓縮;
-#<壓縮比>:壓縮比是一個介于1~9的數值,預設值為 6 ,指定的數值越大,壓縮效率就會愈高;
bunzip2 檔案: 解壓縮 .bz2 檔案
bzcat:在不解壓的情況下,檢視被bzip2文本檔案的内容。
xz:FILE.xz
壓縮比更大
文法格式:xz 選項 參數
常用選項:
-d:解壓縮
-#<壓縮比>:壓縮比是一個介于1~9的數值,預設值為 6 ,指定的數值越大,壓縮效率就會愈高;
-k:壓縮時保留源檔案,也可以使用輸出重定向保留源檔案
unxz:解壓縮
xzcat:在不解壓的情況下,檢視被xz文本檔案的内容,同xzdec
zip:可以用來解壓縮檔案,或者對檔案進行打包操作。zip是個使用廣泛的壓縮程式,檔案經它壓縮後會另外
産生具有“.zip”擴充名的壓縮檔案。
文法格式:zip 壓縮後的檔案名 要壓縮的檔案
常用選項:
-A:調整可執行的自動解壓縮檔案;
-b<工作目錄>:指定暫時存放檔案的目錄;
-c:替每個被壓縮的檔案加上注釋;
-d:從壓縮檔案内删除指定的檔案;
-D:壓縮檔案内不建立目錄名稱;
-f:此參數的效果和指定“-u”參數類似,但不僅更新既有檔案,如果某些檔案原本不存在于壓縮
檔案内,使用本參數會一并将其加入壓縮檔案中;
-F:嘗試修複已損壞的壓縮檔案;
-g:将檔案壓縮後附加在已有的壓縮檔案之後,而非另行建立新的壓縮檔案;
-i<範本樣式>:隻壓縮符合條件的檔案;
-j:隻儲存檔案名稱及其内容,而不存放任何目錄名稱;
-J:删除壓縮檔案前面不必要的資料;
-k:使用MS-DOS相容格式的檔案名稱;
-l:壓縮檔案時,把LF字元置換成LF+CR字元;
-ll:壓縮檔案時,把LF+cp字元置換成LF字元;
-m:将檔案壓縮并加入壓縮檔案後,删除原始檔案,即把檔案移到壓縮檔案中;
-n<字尾字元串>:不壓縮具有特定字尾字元串的檔案;
-o:以壓縮檔案内擁有最新更改時間的檔案為準,将壓縮檔案的更改時間設成和該檔案相同;
-q:不顯示指令執行過程;
-r:遞歸處理,将指定目錄下的所有檔案和子目錄一并處理;
-S:包含系統和隐藏檔案;
-t<日期時間>:把壓縮檔案的日期設成指定的日期;
-T:檢查備份檔案内的每個檔案是否正确無誤;
-u:更換較新的檔案到壓縮檔案内;
-v:顯示指令執行過程或顯示版本資訊;
-V:儲存VMS作業系統的檔案屬性;
-w:在檔案名稱裡假如版本編号,本參數僅在VMS作業系統下有效;
-x<範本樣式>:壓縮時排除符合條件的檔案;
-X:不儲存額外的檔案屬性;
-y:直接儲存符号連接配接,而非該連結所指向的檔案,本參數僅在UNIX之類的系統下有效;
-z:替壓縮檔案加上注釋;
-$:儲存第一個被壓縮檔案所在磁盤的卷冊名稱;
-<壓縮比>:壓縮比是一個介于1~9的數值。
unzip:解壓縮
打包和壓縮的差別?
打包是指将一大堆檔案或目錄變成一個總的檔案;壓縮則是将一個大的檔案通過一些壓縮算法變成一個小檔案。
為什麼要區分這兩個概念呢?
這源于Linux中很多壓縮程式隻能針對一個檔案進行壓縮,這樣當你想要壓縮一大堆檔案時,你得先将這一大堆
檔案先打成一個包(tar指令),然後再用壓縮程式進行壓縮(gzip、bzip2指令)。
歸檔工具:
tar:預設不儲存擴充屬性
利用tar,可以為某一特定檔案建立檔案(備份檔案),也可以在檔案中改變檔案,或者向檔案中加入新的
檔案。利用tar指令,可以把一大堆的檔案和目錄全部打包成一個檔案,這對于備份檔案或将幾個檔案組合
成為一個檔案以便于網絡傳輸是非常有用的。
文法格式:tar 選項 參數
常用選項:
-c: 建立歸檔檔案
-x:展開歸檔檔案
-f:操作歸檔檔案
--xattrs: 歸檔時,保留檔案擴充屬性資訊
-t:不展開歸檔,隻檢視歸檔了哪些檔案
-zcf:歸檔并調用gzip壓縮
-zxf:調用gzip壓縮再歸檔
-jcf:歸檔并調用bzip2壓縮
-jxf:調用bzip2壓縮再歸檔
-Jcf:歸檔并調用xz壓縮
-Jxf:調用xz壓縮再歸檔
cpio: 歸檔工具