压缩的优势:节省硬盘空间,方便传输,节省带宽,由于服务器上的硬盘与带宽成本要比家用高不少。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]#