壓縮和解壓縮工具
壓縮比:文件壓縮比就是指文件經過壓縮后的文件大小與源文件大小的一個比差,經過壓縮工具包可以把文件壓縮
壓縮的目的:
時間換空間
CPU時間換硬盤的空間
壓縮工具:
compress/uncompress 以.Z作為文件后綴
gzip/gunzip 以.gz作為文件后綴
bzip2/bunzip2 以.bz2作為文件后綴
xz/unxz 以.xz作為文件后綴
注意:以上壓縮工具默認不保留原文件
lzma/unlzma 編程使用的壓縮工具
歸檔工具:
zip/unzip
tar,cpio
注意:歸檔和壓縮工具必須以指定后綴作為文件后綴名,并且某一類工具只能解壓它能指定的后綴的文件,不能解壓其他工具指定的后綴的文件
壓縮歸檔工具 | compress | gzip | bzip2 | xz | tar | tar調用gzip壓縮 | tar調用bzip2壓縮 | tar調用xz壓縮 |
文件后綴名 | .Z | .gz | .bz2 | .xz | .tar | .tar.gz | .tar.bz2 | .tar.xz |
壓縮工具:
默認只能對普通文件進行壓縮,不能對目錄進行壓縮
gzip/gunzip/zcat
gzip [OPTION]… FILE …
-d:解壓縮,相當于gunzip
-#:1-9,指定壓縮比,值越大壓縮比越大,默認是6
-c:將壓縮或解壓縮的結果輸出至標準輸出
eg:gzip -c file > /path/to/somefile.gz
以保存源文件的方式壓縮文件
zcat:把文件以解壓的形式顯示出來,但不對文件進行解壓
eg:zcat file.gz > /path/to/somefile
以保存壓縮文件的方式解壓文件
[root@CentOS6 testdir]# ls gm.sh test test.sh [root@CentOS6 testdir]# gzip test [root@CentOS6 testdir]# ls gm.sh test.gz test.sh [root@CentOS6 testdir]# gzip -d test.gz [root@CentOS6 testdir]# ls gm.sh test test.sh [root@CentOS6 testdir]# gzip -c test > test.gz [root@CentOS6 testdir]# ls gm.sh test test.gz test.sh [root@CentOS6 testdir]# gzip -d test.gz gzip: test already exists; do you wish to overwrite (y or n)? y [root@CentOS6 testdir]# ls gm.sh test test.sh
bzip2/bunzip2/bzcat
bzip2 [OPTION]… FILE …
-d:解壓縮
-#:壓縮比,默認為6,可選擇為1-9
-k:keep,保留原文件
bzcat:把文件以解壓的形式顯示出來,但不對文件進行解壓
[root@CentOS6 testdir]# ls gm.sh test test.sh [root@CentOS6 testdir]# bzip2 gm.sh [root@CentOS6 testdir]# ls gm.sh.bz2 test test.sh [root@CentOS6 testdir]# bzip2 -d gm.sh.bz2 [root@CentOS6 testdir]# ls gm.sh test test.sh [root@CentOS6 testdir]# bzip2 -k gm.sh [root@CentOS6 testdir]# ls gm.sh gm.sh.bz2 test test.sh [root@CentOS6 testdir]# bzip2 -d gm.sh.bz2 bzip2: Output file gm.sh already exists. [root@CentOS6 testdir]# ls gm.sh gm.sh.bz2 test test.sh
xz/unxz/xzcat
xz [OPTION]… FILE …
-d:解壓縮
-#:壓縮比,默認為6,可選擇為1-9
-k:keep,保留原文件;
xzcat:把文件以解壓的形式顯示出來,但不對文件進行解壓
[root@CentOS6 testdir]# ls gm.sh gm.sh.bz2 test test.sh [root@CentOS6 testdir]# xz test.sh [root@CentOS6 testdir]# ls gm.sh gm.sh.bz2 test test.sh.xz [root@CentOS6 testdir]# xz -d test.sh.xz [root@CentOS6 testdir]# ls gm.sh gm.sh.bz2 test test.sh [root@CentOS6 testdir]# xz -k test.sh [root@CentOS6 testdir]# ls gm.sh gm.sh.bz2 test test.sh test.sh.xz [root@CentOS6 testdir]# xz -d test.sh.xz xz: test.sh: File exists [root@CentOS6 testdir]# ls gm.sh gm.sh.bz2 test test.sh test.sh.xz
歸檔工具:
解決壓縮工具不能對目錄進行壓縮的問題
tar:
默認保留原文件或目錄
tar [OPTION]…FILE…
(1) 創建歸檔: -c 選項
tar -c -f / PATH/TO/SOMEFILE.tar FILE…
tar -cf / PATH/TO/SOMEFILE.tar FILE…
-f 后加歸檔文件保存的路徑和文件名
此處可以不寫 –
(2) 查看歸檔文件中的文件列表: -t 選項
tar -t -f /PATH/TO/SOMEFILE.tar
(3) 展開歸檔: -x 選項
tar -xf /PATH/TO/SOMEFILE.tar
tar xf /PATH/TO/SOMEFILE.tar -C /PATH/
-C:指定歸檔文件展開后的保存路徑,不指默認為當前工作路徑
注意:若解壓文件的文件名在默認路徑下有同名文件,會直接覆蓋,不會提示用戶
結合壓縮工具實現:歸檔并壓縮
-z: gzip
tar -zcf /path/to/somefile.tar.gz file
歸檔并壓縮成.gz格式的文件
tar -zxf /path/from/somefile.tar.gz
解壓縮展開歸檔
可以直接寫出-xf或者xf
-j: bzip2
tar -jcf /path/to/somefile.tar.gz file
歸檔并壓縮成.bz2格式的文件
tar -jxf /path/from/somefile.tar.gz
解壓縮展開歸檔
可以直接寫出-xf或者xf
-J: xz
tar -Jcf /path/to/somefile.tar.gz file
歸檔并壓縮成.xz格式的文件
tar -Jxf /path/from/somefile.tar.gz
解壓縮展開歸檔
可以直接寫出-xf或者xf
注意:解壓縮并展開歸檔時可省略解壓縮工具(z,j,J),只使用-xf或者xf,tar工具會自行判斷文件后綴并調用相應的解壓工具來完成解壓
[root@CentOS6 testdir]# ls gm.sh gm.sh.bz2 test test.sh test.sh.xz [root@CentOS6 testdir]# tar -jcf test.tar.gz test [root@CentOS6 testdir]# ls gm.sh gm.sh.bz2 test test.sh test.sh.xz test.tar.gz [root@CentOS6 testdir]# tar xf test.tar.gz -C /root/ [root@CentOS6 testdir]# ls /root/ awkgrepsed bin Desktop httpd-2.2.29 scripts test video [root@CentOS6 testdir]# rm test rm: remove regular file `test'? y [root@CentOS6 testdir]# tar xf test.tar.gz [root@CentOS6 testdir]# ls gm.sh gm.sh.bz2 test test.sh test.sh.xz test.tar.gz [root@CentOS6 testdir]# echo xx > test //把test文件重置成xx,測試是否提示用戶覆蓋文件 [root@CentOS6 testdir]# cat test xx [root@CentOS6 testdir]# tar xf test.tar.gz [root@CentOS6 testdir]# cat test //tar展開歸檔時不提示用戶是否覆蓋同名文件,直接覆蓋當前目錄下的同名文件,使用時請小心 1 2 3 4 5
原創文章,作者:megedugao,如若轉載,請注明出處:http://www.www58058.com/36868