壓縮的優勢:節省硬盤空間,方便傳輸,節省帶寬,由於服務器上的硬盤與帶寬成本要比家用高不少。linux
先建立一個比較大的文件算法
[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
壓縮以後,發現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多。服務器
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
[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的壓力越大。時間也會長。工具
[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 1.txt.gz 先解壓後查看
[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
[root@localhost ddd]# gzip -d -c /tmp/1.txt.gz > /tmp/ddd/2.txt [root@localhost ddd]# ls 1.txt 2.txt
壓縮率要比gzip更狠一些,使用的不一樣算法。插件
沒有的話須要安裝一下: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
支持 -c -d選項。
[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支持壓縮目錄。
[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 完畢!
[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]#
[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]#
壓縮完以後源文件不消失
沒有先安裝一下:yum install -y unzip
[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]#
[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]#
[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
[root@localhost ddd]# tar -xvf aminglinux.tar 111/ 111/ 111/222/ 111/222/333/ 111/222/333/444/ 111/1.txt
解包直接覆蓋原目錄
[root@localhost ddd]# tar -tf aminglinux.tar 111/ 111/222/ 111/222/333/ 111/222/333/444/ 111/1.txt [root@localhost ddd]#
用法: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/
[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]#
[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]#
[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]#