==============================================================================? ?
?Linux系統解壓縮
==============================================================================
概述:
??本篇將介紹Linux系統中的壓縮和解壓縮的工具,以及歸檔工具(tar,cpio)
compress/uncompress:對應 .Z 結尾的壓縮格式文件;
gzip/gunzip:其對應的是 .gz 結尾的壓縮格式文件;
bzip2/bunzip2:其對應的是 .bz2 結尾的壓縮格式文件;
xz/unxz: 其對應的是 .xz 結尾的壓縮格式文件;
zip/unzip:其對應的是 .zip 結尾的壓縮格式文件
==============================================================================
Linux系統解壓縮
?1.壓縮比和常用工具
★壓縮比:
時間換空間(CPU的時間 --->磁盤空間)
★常用工具:
早期的有compress和uncompress,其對應的是 .Z 結尾的壓縮格式文件,現在適應較多的有:
gzip/gunzip:其對應的是 .gz 結尾的壓縮格式文件;
bzip2/bunzip2:其對應的是 .bz2 結尾的壓縮格式文件;
xz/unxz:?其對應的是 .xz 結尾的壓縮格式文件;
zip/unzip:其對應的是 .zip 結尾的壓縮格式文件
tar,cpio:歸檔和展開歸檔
?2.gzip和gunzip(使用最多)
★常用工具:
gzip,gunzip,zcat
★語法:
gzip [OPTION]... FILE ...
☉選項:
-d:解壓縮,相當于gunzip
-c:將壓縮或解壓縮的結果輸出至標準輸出(gzip -c FILE > /PATH/TP/SOMEFILE.gz);
-#:1-9,指定壓縮比,值越大壓縮比越大 ?如:gzip -9 m
-v:顯示詳情
☉解壓縮:
guzip
☉zcat:
不顯式解壓縮的前提下查看文本文件內容(適用于查看小文件) ?如:zcat FILE >?/PATH/TP/SOMEFILE
演示:
[root@centos7?~]#?cp?/var/log/messages?/tmp/test/ [root@centos7?~]#?ll?/tmp/test/ 總用量?288 -rw-r-----?1?root?root??????0?2月??20?13:41?a -rw-rw-rw-?1?root?root??????0?2月??20?13:41?b.danger -r--r-----?1?root?root??????0?2月??20?13:41?c -rwxrwxr-x?1?root?root??????0?2月??20?13:41?d -rwxrwxrwx?1?root?root??????0?2月??20?13:41?e.danger -rw-r--r--?1?root?root??????0?2月??20?13:41?f -rw-r--r--?1?root?root??????0?2月??20?13:41?g -rw-------?1?root?root?292504?2月??20?16:28?messages [root@centos7?~]#?ll?-h?/tmp/test/messages? -rw-------?1?root?root?286K?2月??20?16:28?/tmp/test/messages#?壓縮,刪除原文件,保留壓縮后以.gz結尾的文件 [root@centos7?~]#?gzip?/tmp/test/messages[root@centos7?~]#?ll?-h?/tmp/test 總用量?44K -rw-r-----?1?root?root???0?2月??20?13:41?a -rw-rw-rw-?1?root?root???0?2月??20?13:41?b.danger -r--r-----?1?root?root???0?2月??20?13:41?c -rwxrwxr-x?1?root?root???0?2月??20?13:41?d -rwxrwxrwx?1?root?root???0?2月??20?13:41?e.danger -rw-r--r--?1?root?root???0?2月??20?13:41?f -rw-r--r--?1?root?root???0?2月??20?13:41?g -rw-------?1?root?root?41K?2月??20?16:28?messages.gz#?解壓縮,原來的壓縮文件被刪除,保留解壓縮后的文件 [root@centos7?~]#?gunzip?/tmp/test/messages.gz? [root@centos7?~]#?ll?-h?/tmp/test 總用量?288K -rw-r-----?1?root?root????0?2月??20?13:41?a -rw-rw-rw-?1?root?root????0?2月??20?13:41?b.danger -r--r-----?1?root?root????0?2月??20?13:41?c -rwxrwxr-x?1?root?root????0?2月??20?13:41?d -rwxrwxrwx?1?root?root????0?2月??20?13:41?e.danger -rw-r--r--?1?root?root????0?2月??20?13:41?f -rw-r--r--?1?root?root????0?2月??20?13:41?g -rw-------?1?root?root?286K?2月??20?16:28?messages#?zcat可以查看壓縮的文件,不建議對大文件使用zcat命令查看 [root@centos7?~]#?zcat?/tmp/test/messages.gz#===================================================================================== #?解壓縮 [root@centos7?~]#?gzip?-d?/tmp/test/messages.gz? [root@centos7?~]#?ll?/tmp/test/ 總用量?288 -rw-r-----?1?root?root??????0?2月??20?13:41?a -rw-rw-rw-?1?root?root??????0?2月??20?13:41?b.danger -r--r-----?1?root?root??????0?2月??20?13:41?c -rwxrwxr-x?1?root?root??????0?2月??20?13:41?d -rwxrwxrwx?1?root?root??????0?2月??20?13:41?e.danger -rw-r--r--?1?root?root??????0?2月??20?13:41?f -rw-r--r--?1?root?root??????0?2月??20?13:41?g -rw-------?1?root?root?292504?2月??20?16:28?messages#?將壓縮或解壓縮的結果輸出至標準輸出(gzip?-c?FILE?>?/PATH/TP/SOMEFILE.gz) [root@centos7?~]#?gzip?-c?/tmp/test/messages?>?/tmp/test/messages.gz [root@centos7?~]#?ll?/tmp/test/ 總用量?332 -rw-r-----?1?root?root??????0?2月??20?13:41?a -rw-rw-rw-?1?root?root??????0?2月??20?13:41?b.danger -r--r-----?1?root?root??????0?2月??20?13:41?c -rwxrwxr-x?1?root?root??????0?2月??20?13:41?d -rwxrwxrwx?1?root?root??????0?2月??20?13:41?e.danger -rw-r--r--?1?root?root??????0?2月??20?13:41?f -rw-r--r--?1?root?root??????0?2月??20?13:41?g -rw-------?1?root?root?292504?2月??20?16:28?messages -rw-r--r--?1?root?root??41791?2月??20?16:44?messages.gz#?解壓縮到標準輸出 [root@centos7?~]#?rm?-f?/tmp/test/messages [root@centos7?~]#?gzip?-d?-c?/tmp/test/messages.gz?>?/tmp/test/messages [root@centos7?~]#?ll?/tmp/test/ 總用量?332 -rw-r-----?1?root?root??????0?2月??20?13:41?a -rw-rw-rw-?1?root?root??????0?2月??20?13:41?b.danger -r--r-----?1?root?root??????0?2月??20?13:41?c -rwxrwxr-x?1?root?root??????0?2月??20?13:41?d -rwxrwxrwx?1?root?root??????0?2月??20?13:41?e.danger -rw-r--r--?1?root?root??????0?2月??20?13:41?f -rw-r--r--?1?root?root??????0?2月??20?13:41?g -rw-r--r--?1?root?root?292504?2月??20?16:50?messages -rw-r--r--?1?root?root??41791?2月??20?16:44?messages.gz
?
?2.bzip2/bunzip2/bzcat
★語法:
bzip2 [OPTION]... FILE ...
☉選項:
-k:keep, 保留原文件;
-d:解壓縮;
-#:1-9,壓縮比,默認為6
☉bzcat:
不顯式解壓縮的前提下查看文本文件內容
注意:
bzip2和gzip命令的使用方式基本相同,壓縮或解壓縮后都會刪除源文件
演示:
#?壓縮 [root@centos7?~]#?bzip2?/tmp/test/messages[root@centos7?~]#?ll?-h?/tmp/test/ 總用量?72K -rw-r-----?1?root?root???0?2月??20?13:41?a -rw-rw-rw-?1?root?root???0?2月??20?13:41?b.danger -r--r-----?1?root?root???0?2月??20?13:41?c -rwxrwxr-x?1?root?root???0?2月??20?13:41?d -rwxrwxrwx?1?root?root???0?2月??20?13:41?e.danger -rw-r--r--?1?root?root???0?2月??20?13:41?f -rw-r--r--?1?root?root???0?2月??20?13:41?g -rw-r--r--?1?root?root?26K?2月??20?16:50?messages.bz2?#壓縮后的結果 -rw-r--r--?1?root?root?41K?2月??20?16:44?messages.gz#?解壓縮 [root@centos7?~]#?bunzip2?/tmp/test/messages.bz2? [root@centos7?~]#?ll?-h?/tmp/test/ 總用量?332K -rw-r-----?1?root?root????0?2月??20?13:41?a -rw-rw-rw-?1?root?root????0?2月??20?13:41?b.danger -r--r-----?1?root?root????0?2月??20?13:41?c -rwxrwxr-x?1?root?root????0?2月??20?13:41?d -rwxrwxrwx?1?root?root????0?2月??20?13:41?e.danger -rw-r--r--?1?root?root????0?2月??20?13:41?f -rw-r--r--?1?root?root????0?2月??20?13:41?g -rw-r--r--?1?root?root?286K?2月??20?16:50?messages??#?解壓縮后的結果 -rw-r--r--?1?root?root??41K?2月??20?16:44?messages.gz#?-k?選項不用指明重定向的文件,自動保留源文件在當前文件中 [root@centos7?~]#?bzip2?-k?/tmp/test/messages [root@centos7?~]#?ll?-h?/tmp/test/ 總用量?360K -rw-r-----?1?root?root????0?2月??20?13:41?a -rw-rw-rw-?1?root?root????0?2月??20?13:41?b.danger -r--r-----?1?root?root????0?2月??20?13:41?c -rwxrwxr-x?1?root?root????0?2月??20?13:41?d -rwxrwxrwx?1?root?root????0?2月??20?13:41?e.danger -rw-r--r--?1?root?root????0?2月??20?13:41?f -rw-r--r--?1?root?root????0?2月??20?13:41?g -rw-r--r--?1?root?root?286K?2月??20?16:50?messages -rw-r--r--?1?root?root??26K?2月??20?16:50?messages.bz2 -rw-r--r--?1?root?root??41K?2月??20?16:44?messages.gz
?3.xz/unxz/zxcat(壓縮比最強)
★語法:
xz [OPTION]... FILE ...
☉選項:
-k:keep, 保留原文件;
-d:解壓縮;
-#:1-9,壓縮比,默認為6;
☉xzcat:
不顯式解壓縮的前提下查看文本文件內容
演示:
[root@centos7?~]#?xz?/tmp/test/messages [root@centos7?~]#?ll?-h?/tmp/test/ 總用量?96K -rw-r-----?1?root?root???0?2月??20?13:41?a -rw-rw-rw-?1?root?root???0?2月??20?13:41?b.danger -r--r-----?1?root?root???0?2月??20?13:41?c -rwxrwxr-x?1?root?root???0?2月??20?13:41?d -rwxrwxrwx?1?root?root???0?2月??20?13:41?e.danger -rw-r--r--?1?root?root???0?2月??20?13:41?f -rw-r--r--?1?root?root???0?2月??20?13:41?g -rw-r--r--?1?root?root?26K?2月??20?16:50?messages.bz2 -rw-r--r--?1?root?root?41K?2月??20?16:44?messages.gz -rw-r--r--?1?root?root?21K?2月??20?16:50?messages.xz
歸檔工具:tar
?1.歸檔及常用工具
★歸檔:
歸檔就是將多個文件打包為單個文件以便于管理,默認的歸檔不會執行壓縮。
★常用的工具:
tar,cpio(不常用)
?2.tar命令
★語法:
tar [OPTION...] [FILE]...
☉創建歸檔(-c,-f 指定文件):
tar -c -f?/PATH/TO/SOMEFILE.tar ?FILE...?(后綴名固定以 .tar 結尾;)
tar -cf /PATH/TO/SOMEFILE.tar ?FILE...?(可以合并寫為-cf ,但不能寫為 -fc ,因為-f 選項后帶參數)
☉展開歸檔(-x,-f 指定文件):
tar -x -f?/PATH/TO/SOMEFILE.tar?(展開至歸檔所在的文件中)
tar xf /PATH/TO/SOMEFILE.tar?-C?/PATH/TO/SOMEFILE?(-C :展開歸檔至指定文件中)
☉查看歸檔文件中的列表(-t,-f 指定文件):
tar -tf?/PATH/TO/SOMEFILE.tar
注意:
多個選項可以合并,但-f由于要帶參數,因此要放到最右側 如:-cf,-xf,-cf;
選項的引導符 "-" 可省略。如:tar xf,tar zf
演示:
[root@centos7?~]#?ls?/tmp/test/tao boot.log??fstab??issue??pacemaker.log??wpa_supplicant.log??Xorg.0.log??yum.log#?對所有以?.log?結尾的文件進行歸檔 [root@centos7?~]#?tar?-cf?/tmp/test/mylog.tar?/tmp/test/tao/*.log [root@centos7?~]#?ll?/tmp/test/ 總用量?136 -rw-r--r--?1?root?root?26074?2月??20?16:50?messages.bz2 -rw-r--r--?1?root?root?41791?2月??20?16:44?messages.gz -rw-r--r--?1?root?root?21420?2月??20?16:50?messages.xz -rw-r--r--?1?root?root?40960?2月??20?17:45?mylog.tar???#?歸檔后的文件 drwxr-xr-x?2?root?root???121?2月??20?17:43?tao????#?展開歸檔 [root@centos7?test]#?tar?xf?mylog.tar? [root@centos7?test]#?ll 總用量?176 -rw-r--r--?1?root?root?12097?2月??20?17:42?boot.log -rw-r--r--?1?root?root?26074?2月??20?16:50?messages.bz2 -rw-r--r--?1?root?root?41791?2月??20?16:44?messages.gz -rw-r--r--?1?root?root?21420?2月??20?16:50?messages.xz -rw-r--r--?1?root?root?40960?2月??20?17:51?mylog.tar -rw-r-----?1?root?root?????0?2月??20?17:42?pacemaker.log drwxr-xr-x?2?root?root???121?2月??20?17:43?tao -rw-r--r--?1?root?root??2800?2月??20?17:42?wpa_supplicant.log -rw-r--r--?1?root?root?18303?2月??20?17:42?Xorg.0.log -rw-------?1?root?root???105?2月??20?17:42?yum.log#?-C?展開歸檔至指定文件中 [root@centos7?test]#?mkdir?/tmp/newtest [root@centos7?test]#?tar?xf?mylog.tar?-C?/tmp/newtest [root@centos7?test]#?ll?/tmp/newtest 總用量?40 -rw-r--r--?1?root?root?12097?2月??20?17:42?boot.log -rw-r-----?1?root?root?????0?2月??20?17:42?pacemaker.log -rw-r--r--?1?root?root??2800?2月??20?17:42?wpa_supplicant.log -rw-r--r--?1?root?root?18303?2月??20?17:42?Xorg.0.log -rw-------?1?root?root???105?2月??20?17:42?yum.log#?查看歸檔文件中的文件列表 [root@centos7?test]#?tar?tf?mylog.tar? boot.log pacemaker.log wpa_supplicant.log Xorg.0.log yum.log
? 歸檔完成后通常需要壓縮,結合此前的壓縮工具,就能實現壓縮多個文件了。?
★結合壓縮工具實現:歸檔并壓縮:
☉-z:gzip(后綴名.tar.gz)
tar -zcf /PATH/TO/MEFILE.tar.gz?FILE... ?(創建歸檔并壓縮);
tar -zxf /PATH/TO/SOMEFILE.tar.gz ??(解壓縮并展開歸檔,z不寫也行)
☉-j:bzip2(后綴名.tar.bz2)
-jcf
-jxf
☉-J:xz(后綴名:.tar.xz)
-Jcf
-Jxf
注意:
展開歸檔可以直接使用?tar xf?,而無需為其指定對應的壓縮工具選項即可
演示:
#?對目錄進行歸檔并壓縮 [root@centos7?test]#?tar?zcf?/tmp/test/tao.tar.gz?tao [root@centos7?test]#?ll?/tmp/test 總用量?184 -rw-r--r--?1?root?root?12097?2月??20?17:42?boot.log -rw-r--r--?1?root?root?26074?2月??20?16:50?messages.bz2 -rw-r--r--?1?root?root?41791?2月??20?16:44?messages.gz -rw-r--r--?1?root?root?21420?2月??20?16:50?messages.xz -rw-r--r--?1?root?root?40960?2月??20?17:51?mylog.tar -rw-r-----?1?root?root?????0?2月??20?17:42?pacemaker.log drwxr-xr-x?2?root?root???121?2月??20?17:43?tao???????????#?原文件 -rw-r--r--?1?root?root??7232?2月??20?18:15?tao.tar.gz????#?歸檔壓縮后的文件 -rw-r--r--?1?root?root??2800?2月??20?17:42?wpa_supplicant.log -rw-r--r--?1?root?root?18303?2月??20?17:42?Xorg.0.log -rw-------?1?root?root???105?2月??20?17:42?yum.log#?刪除原文件 [root@centos7?test]#?rm?-fr?tao?????????#?展開歸檔,其中?z?可省略,tar命令會自動識別其為壓縮文件 [root@centos7?test]#?tar?xf?tao.tar.gz? [root@centos7?test]#?ll 總用量?184 -rw-r--r--?1?root?root?12097?2月??20?17:42?boot.log -rw-r--r--?1?root?root?26074?2月??20?16:50?messages.bz2 -rw-r--r--?1?root?root?41791?2月??20?16:44?messages.gz -rw-r--r--?1?root?root?21420?2月??20?16:50?messages.xz -rw-r--r--?1?root?root?40960?2月??20?17:51?mylog.tar -rw-r-----?1?root?root?????0?2月??20?17:42?pacemaker.log drwxr-xr-x?2?root?root???121?2月??20?17:43?tao???????????#?展開后的文件 -rw-r--r--?1?root?root??7232?2月??20?18:15?tao.tar.gz -rw-r--r--?1?root?root??2800?2月??20?17:42?wpa_supplicant.log -rw-r--r--?1?root?root?18303?2月??20?17:42?Xorg.0.log -rw-------?1?root?root???105?2月??20?17:42?yum.log
zip/unzip
? ? ? ? ---最通用的壓縮工具,即可以歸檔,又能壓縮(現在不常用)
★創建歸檔(.zip后綴):
zip file.zip ?/PATH/TO/SOMEFILE
★解壓縮
unzip?file.zip
演示:
#?對目錄進行歸檔并壓縮 [root@centos7?test]#?zip?/tmp/test/tao.zip?taoadding:?tao/?(stored?0%) [root@centos7?test]#?ll 總用量?188 -rw-r--r--?1?root?root?12097?2月??20?17:42?boot.log -rw-r--r--?1?root?root?26074?2月??20?16:50?messages.bz2 -rw-r--r--?1?root?root?41791?2月??20?16:44?messages.gz -rw-r--r--?1?root?root?21420?2月??20?16:50?messages.xz -rw-r--r--?1?root?root?40960?2月??20?17:51?mylog.tar -rw-r-----?1?root?root?????0?2月??20?17:42?pacemaker.log drwxr-xr-x?2?root?root???121?2月??20?17:43?tao -rw-r--r--?1?root?root??7232?2月??20?18:15?tao.tar.gz -rw-r--r--?1?root?root???158?2月??20?18:26?tao.zip -rw-r--r--?1?root?root??2800?2月??20?17:42?wpa_supplicant.log -rw-r--r--?1?root?root?18303?2月??20?17:42?Xorg.0.log -rw-------?1?root?root???105?2月??20?17:42?yum.log[root@centos7?test]#?rm?-fr?tao#?解壓縮 [root@centos7?test]#?unzip?tao.zip? Archive:??tao.zipcreating:?tao/ [root@centos7?test]#?ll 總用量?188 -rw-r--r--?1?root?root?12097?2月??20?17:42?boot.log -rw-r--r--?1?root?root?26074?2月??20?16:50?messages.bz2 -rw-r--r--?1?root?root?41791?2月??20?16:44?messages.gz -rw-r--r--?1?root?root?21420?2月??20?16:50?messages.xz -rw-r--r--?1?root?root?40960?2月??20?17:51?mylog.tar -rw-r-----?1?root?root?????0?2月??20?17:42?pacemaker.log drwxr-xr-x?2?root?root?????6?2月??20?17:43?tao -rw-r--r--?1?root?root??7232?2月??20?18:15?tao.tar.gz -rw-r--r--?1?root?root???158?2月??20?18:26?tao.zip -rw-r--r--?1?root?root??2800?2月??20?17:42?wpa_supplicant.log -rw-r--r--?1?root?root?18303?2月??20?17:42?Xorg.0.log -rw-------?1?root?root???105?2月??20?17:42?yum.log
cpio 命令
★cpio
cpio命令是通過重定向的方式將文件進行打包備份,還原恢復的工具,它可以解壓以“.cpio”或者“.tar”結尾的文件。
★用法:
cpio[選項] > 文件名或者設備名
cpio[選項] < 文件名或者設備名
★選項:
-o:將文件拷貝打包成文件或者將文件輸出到設備上;
-i:解包,將打包文件解壓或將設備上的備份還原到系統;
-t:預覽,查看文件內容或者輸出到設備上的文件內容;
-v:顯示打包過程中的文件名稱;
-d:解包生成目錄,在cpio還原時,自動的建立目錄;
-c:一種較新的存儲方式
示例:
將etc目錄備份:
find ./etc-print |cpio -ov> etc.cpio
內容預覽
cpio–tv < etc.cpio
要解包文件
cpio–iv < etc.cpio
cpio–idv < etc.cpio
轉載于:https://blog.51cto.com/1992tao/1899605