壓縮打包介紹,gzip壓縮工具,bzip2壓縮工具,xz壓縮工具zip壓縮工具,tar打包,打包並壓縮

常見壓縮文件

  • windows :.rar     .zip    .7z

  • Linux : .zip   .gz    .bz2    .xz    .tar.gz    .tar.bz2    .tar.xz

壓縮的優勢:節省硬盤空間,方便傳輸,節省帶寬,由於服務器上的硬盤與帶寬成本要比家用高不少。linux


gzip壓縮工具

  • gzip 不能壓縮目錄

先建立一個比較大的文件算法

[root@localhost tmp]# mkdir ddd
[root@localhost tmp]# cd ddd/
[root@localhost ddd]# find /etc/ -type f -name "*conf"
/etc/resolv.conf
/etc/pki/ca-trust/ca-legacy.conf
/etc/yum/pluginconf.d/fastestmirror.conf
/etc/yum/pluginconf.d/langpacks.conf
/etc/yum/protected.d/systemd.conf
/etc/yum/version-groups.conf
/etc/rdma/mlx4.conf
/etc/rdma/rdma.conf
/etc/asound.conf
/etc/kdump.conf
/etc/tuned/tuned-main.conf
/etc/audisp/audispd.conf
/etc/audisp/plugins.d/af_unix.conf
/etc/audisp/plugins.d/syslog.conf
/etc/audit/auditd.conf
/etc/chrony.conf
/etc/man_db.conf
/etc/sudo-ldap.conf
/etc/sudo.conf
/etc/e2fsck.conf
/etc/mke2fs.conf
/etc/vconsole.conf
/etc/locale.conf
[root@localhost ddd]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
[root@localhost ddd]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
[root@localhost ddd]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
[root@localhost ddd]# du -sh 1.txt
704K	1.txt
[root@localhost ddd]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
[root@localhost ddd]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
[root@localhost ddd]# du -sh 1.txt
1.2M	1.txt
[root@localhost ddd]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
[root@localhost ddd]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
[root@localhost ddd]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
[root@localhost ddd]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
[root@localhost ddd]# du -sh 1.txt
2.2M	1.txt
[root@localhost ddd]#

這個增長的空間不是很正常,有不少虛的空間實際上看多少行。否則壓縮在解壓縮後大小和原來會不同。windows

[root@localhost ddd]# du -sh 1.txt 
2.0M	1.txt
[root@localhost ddd]# wc -l 1.txt 
51576 1.txt
[root@aminglinux-01 ddd]# ls -lh 1.txt 
-rw-r--r--. 1 root root 1.3M 5月  28 10:13 1.txt
  • 而後打包一下:gzip

壓縮以後,發現1.txt不見了,變成了1.txt.gz數組

[root@localhost ddd]# gzip 1.txt 
[root@localhost ddd]# ls
1.txt.gz
[root@localhost ddd]# du -sh 1.txt.gz 
524K	1.txt.gz

壓縮後看看大小隻有524kb,以前是2M多。服務器

  • 解壓gzip包 :gzip -d 1.txt.gz

gunzip 命令也是能夠解壓縮的。架構

[root@localhost ddd]# gzip -d 1.txt.gz 
[root@localhost ddd]# ls
1.txt
[root@localhost ddd]# du -sh 1.txt 
2.0M	1.txt
  • gzip -1~9 壓縮有9個級別,9級別壓縮包最小,1級別壓縮包大。默認是6級別。壓縮包壓縮到最小後,級別在高,壓縮包也不會變得更小了。

[root@localhost ddd]# gzip -d 1.txt.gz 
[root@localhost ddd]# ls
1.txt
[root@localhost ddd]# du -sh 1.txt 
2.0M	1.txt
[root@localhost ddd]# gzip -1 1.txt 
[root@localhost ddd]# du -sh 1.txt.gz 
620K	1.txt.gz
[root@localhost ddd]# gzip -d 1.txt.gz 
[root@localhost ddd]# gzip -9 1.txt
[root@localhost ddd]# du -sh 1.txt.gz 
524K	1.txt.gz

能夠看到壓縮級別越高壓縮後的文件越小。但同時級別越高對cpu的壓力越大。時間也會長。工具

  • 查看壓縮文件屬性 file

[root@localhost ddd]# file 1.txt.gz 
1.txt.gz: gzip compressed data, was "1.txt", from Unix, last modified: (最後更改時間)Thu Aug 24 20:07:13 2017, max compression(最大的壓縮比)
  • 查看壓縮文件內容 zcat

zcat 1.txt.gz
先解壓後查看
  • 壓縮成自定義文件名的壓縮包而且源文件不消失 -c

[root@localhost ddd]# gzip -c 1.txt > /tmp/1.txt.gz
[root@localhost ddd]# ls
1.txt
[root@localhost ddd]# ls /tmp/1.txt.gz 
/tmp/1.txt.gz
  • 解壓成自定義文件名的文件而且源壓縮包不消失 -d -c

[root@localhost ddd]# gzip -d -c /tmp/1.txt.gz > /tmp/ddd/2.txt
[root@localhost ddd]# ls
1.txt  2.txt

bzip2 壓縮工具

壓縮率要比gzip更狠一些,使用的不一樣算法。插件

  • 也不支持壓縮目錄

  • 用法:bzip2 1.txt

沒有的話須要安裝一下:yum install -y bzip2unix

[root@localhost ddd]# ls
1.txt  2.txt
[root@localhost ddd]# ls -sh
總用量 4.0M
2.0M 1.txt  2.0M 2.txt
[root@localhost ddd]# gzip 1.txt 
[root@localhost ddd]# bzip2 2.txt 
[root@localhost ddd]# ls -sh
總用量 744K
524K 1.txt.gz  220K 2.txt.bz2
[root@localhost ddd]#

明顯bzip2壓縮的要更小一些code

  • 解壓: bzip2 -d 或者 bunzip2

  • 也支持 -c : bzip2 -c 1.txt > /tmp/1.txt.bz2

  • 解壓用法同gzip

  • 級別也是9個級別。默認壓縮級別是9

  • file也能夠查看

  • bzcat 查看壓縮包具體內容


xz壓縮工具

  • 一樣不支持壓縮目錄

  • 用法基本相同。用的很少。

支持 -c -d選項。

  • 壓縮更小,比bzip2還小。

[root@aminglinux-01 ddd]# xz 1.txt 
[root@aminglinux-01 ddd]# ls
1.txt.xz
[root@aminglinux-01 ddd]# du 1.txt.xz 
64	1.txt.xz

一樣是1~9的級別,默認6級別。  


  • 支持壓縮目錄

以前的幾個壓縮工具都不支持目錄壓縮,zip支持壓縮目錄。

  • 安裝:yum install -y zip

[root@localhost ddd]# tree 
.
├── 111
│   ├── 1.txt
│   └── 222
│       └── 333
│           └── 444
├── 1.txt
└── 2.txt.bz2.xz

4 directories, 3 files
[root@localhost ddd]# du -sh 111/
2.0M	111/
[root@localhost ddd]# yum install -y zip
已加載插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.hosteurope.de
 * extras: ftp.hosteurope.de
 * updates: ftp.hosteurope.de
正在解決依賴關係
--> 正在檢查事務
---> 軟件包 zip.x86_64.0.3.0-11.el7 將被 安裝
--> 解決依賴關係完成

依賴關係解決

====================================================================================================================================================
 Package                         架構                               版本                                     源                                大小
====================================================================================================================================================
正在安裝:
 zip                             x86_64                             3.0-11.el7                               base                             260 k

事務概要
====================================================================================================================================================
安裝  1 軟件包

總下載量:260 k
安裝大小:796 k
Downloading packages:
zip-3.0-11.el7.x86_64.rpm                                                                                                    | 260 kB  00:00:04     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安裝    : zip-3.0-11.el7.x86_64                                                                                                           1/1 
  驗證中      : zip-3.0-11.el7.x86_64                                                                                                           1/1 

已安裝:
  zip.x86_64 0:3.0-11.el7                                                                                                                           

完畢!
  • 用法:zip 1.txt.zip 1.txt

[root@localhost ddd]# zip 1.txt.zip 1.txt 
  adding: 1.txt (deflated 74%)
[root@localhost ddd]# ls
111  1.txt  1.txt.zip  2.txt.bz2.xz
[root@localhost ddd]# du -sh 1.txt.zip 
524K	1.txt.zip
[root@localhost ddd]#
  • 壓縮目錄:zip -r

[root@localhost ddd]# zip -r 111.zip 111/
  adding: 111/ (stored 0%)
  adding: 111/222/ (stored 0%)
  adding: 111/222/333/ (stored 0%)
  adding: 111/222/333/444/ (stored 0%)
  adding: 111/1.txt (deflated 74%)
[root@localhost ddd]# ls
111  111.zip  1.txt  1.txt.zip  2.txt.bz2.xz
[root@localhost ddd]#

壓縮完以後源文件不消失

  • 解壓縮:unzip

沒有先安裝一下:yum install -y unzip

  • 解壓到指定目錄:unzip 1.txt.zip -d 目錄/

[root@localhost ddd]# unzip 1.txt.zip -d /tmp/567/
Archive:  1.txt.zip
  inflating: /tmp/567/1.txt
[root@localhost ddd]# ls -sh /tmp/567/
總用量 2.0M
2.0M 1.txt
[root@localhost ddd]#
  • zip是不能直接查看內容

  • 只能查看文件列表:unzip -l 111.zip

[root@localhost ddd]# unzip -l 111.zip 
Archive:  111.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  08-25-2017 21:45   111/
        0  08-25-2017 21:43   111/222/
        0  08-25-2017 21:43   111/222/333/
        0  08-25-2017 21:43   111/222/333/444/
  2043960  08-25-2017 21:45   111/1.txt
---------                     -------
  2043960                     5 files
[root@localhost ddd]#

tar打包工具

  • 用法:

    • -x : 表示解壓縮
    • -t : 查看tar包裏的文件
    • -v : 表示可視化
    • -c : 創建一個tar包或者壓縮文件
    • -f : 後面跟文件名(表示壓縮或解壓後的文件名是什麼),要注意若是是多個參數組合的狀況下,-f 參數寫到最後面。
    • -z : 同時用gzip壓縮
    • -j : 同時用bzip2壓縮
    • -J: 同時用xz壓縮
    • --exclude :打包時過濾文件

打包命令:tar -cvf aminglinux.tar 111/

[root@localhost ddd]# tar -cvf aminglinux.tar 111/
111/
111/222/
111/222/333/
111/222/333/444/
111/1.txt
[root@localhost ddd]# ls
111  111.zip  1.txt  1.txt.zip  2.txt.bz2.xz  aminglinux.tar

解包命令:tar -xvf aminglinux.tar 111/

[root@localhost ddd]# tar -xvf aminglinux.tar 111/
111/
111/222/
111/222/333/
111/222/333/444/
111/1.txt

解包直接覆蓋原目錄

  • 打包也能夠打包目錄,文件,目錄和文件

  • 查看tar包:tar -tf aminglinux.tar

[root@localhost ddd]# tar -tf aminglinux.tar 
111/
111/222/
111/222/333/
111/222/333/444/
111/1.txt
[root@localhost ddd]#
  • 打包時過濾文件:--exclude

用法:tar -cvf tar包 --exclude 須要過濾的文件名 打包的文件

[root@localhost ddd]# tar -cvf  aminglinux.tar --exclude 1.txt  111/
111/
111/222/
111/222/333/
111/222/333/444/
[root@localhost ddd]#

還能夠這樣用

[root@localhost ddd]# tar -cvf  aminglinux.tar --exclude "*.txt"  111/
111/
111/222/
111/222/333/
111/222/333/444/
  • -z : 打包同時用gzip壓縮

[root@localhost ddd]# tar -czvf aminglinux.tar.gz 1.txt 111
1.txt
111/
111/222/
111/222/333/
111/222/333/444/
111/1.txt
[root@localhost ddd]# ls
111  111.zip  1.txt  1.txt.zip  2.txt.bz2.xz  aminglinux.tar  aminglinux.tar.gz  --exclude
[root@localhost ddd]# du -sh aminglinux.tar.gz 
1.1M	aminglinux.tar.gz
[root@localhost ddd]# du -sh 111/ 1.txt
2.0M	111/
2.0M	1.txt
[root@localhost ddd]#
  • -j : 打包同時用bzip2壓縮

[root@localhost ddd]# tar -cjvf aminglinux.tar.bz2 1.txt 111
1.txt
111/
111/222/
111/222/333/
111/222/333/444/
111/1.txt
[root@localhost ddd]# du -sh aminglinux.tar.bz2
424K	aminglinux.tar.bz2
[root@localhost ddd]#
  • -J: 同時用xz壓縮

[root@localhost ddd]# tar -cJvf aminglinux.tar.xz 1.txt 111
1.txt
111/
111/222/
111/222/333/
111/222/333/444/
111/1.txt
[root@localhost ddd]# du -sh aminglinux.tar.xz
60K	aminglinux.tar.xz
[root@localhost ddd]#
相關文章
相關標籤/搜索