一、关于打包和压缩

打包和压缩的最大意义在于减少文件传输中需要的流量。打包的方式大概有tar命令,zip命令。压缩的方式有gzip,bzip2,xz。tar命令可以通过参数将压缩和打包在一起执行。

二、gzip

命令格式:gzip -n file

[root@ruanwenwu02 ~]# ls -l anaconda-ks.cfg
-rw-------. root root 10月 : anaconda-ks.cfg
[root@ruanwenwu02 ~]# gzip - anaconda-ks.cfg
[root@ruanwenwu02 ~]# ls -l anaconda-ks.cfg.gz
-rw-------. root root 10月 : anaconda-ks.cfg.gz

基本上压缩了一半。-n的默认值是6,最大是9,n的值越大压缩的程度越高。

[root@ruanwenwu02 ~]# gzip - anaconda-ks.cfg
[root@ruanwenwu02 ~]# ls -l anaconda-ks.cfg.gz
-rw-------. root root 10月 : anaconda-ks.cfg.gz

实验发现n的值-3和-9的区别并不大。

解压缩命令:gzip -d filename.gz

[root@ruanwenwu02 ~]# gzip -d anaconda-ks.cfg.gz
[root@ruanwenwu02 ~]# ls -l anaconda-ks.cfg
-rw-------. root root 10月 : anaconda-ks.cfg

如果要查看压缩过后的文件,需要使用命令zcat:

[root@ruanwenwu02 ~]# cat anaconda-ks.cfg.gz
��anaconda-ks.cfg�TQo�
{�BĆA��?"2eJ�����?$ŏ�>~�s4Ph�W�����M׮{�^�e�ڵk�
J���6ʃ���K�^"�q�?kd?[�.*4�Q�R�Yam�z3Y/]e�2��EaN1kt��y?cWX��i�l6��|!�i�qa�[m3��0�{j4���
�d�u�|�e8��?�(�
�'b�"3��O�RA��E�����Յ�⎺.·���2�ǃ�ף��'���XMj��=.���t������H�%�I����ӭ]=�������ݴ�n�>۷7�]�����m1;j��>=;d;#�B���Q{k:��G���?�v�
&≤_%��]���π\XBRJ␉��;襒��� '�5��h4�@����ì����-��d��߽ϲ?�9-@�>���c?Z���Vi�"���@i�)}A�čm�i#k��s�6�eW���d�yS������F4���Z������Z���m-h;~:�I�!z%6��$�^_���n_�� �����y����7�ע��[root@ruanwenwu02 ~]# zcat anaconda-ks.cf^C
[root@ruanwenwu02 ~]# zcat anaconda-ks.cfg.gz |head -n
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512

三、bzip2

压缩:

[root@ruanwenwu02 ~]# bzip2 anaconda-ks.cfg
[root@ruanwenwu02 ~]# ls -l anaconda-ks.cfg.bz2
-rw-------. root root 10月 : anaconda-ks.cfg.bz2

解压缩:

[root@ruanwenwu02 ~]# bzip2 -d anaconda-ks.cfg.bz2 

查看:

[root@ruanwenwu02 ~]# bzcat anaconda-ks.cfg.bz2 |head -n
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512

四、xz

xz的用法和gzip和bzip2的用法一样。

压缩:

[root@ruanwenwu02 ~]# xz anaconda-ks.cfg
[root@ruanwenwu02 ~]# ls -l anaconda-ks.cfg.xz
-rw-------. root root 10月 : anaconda-ks.cfg.xz

解压缩:

[root@ruanwenwu02 ~]# xz -d anaconda-ks.cfg.xz
[root@ruanwenwu02 ~]# ls -l anaconda-ks.cfg
-rw-------. root root 10月 : anaconda-ks.cfg

查看:

[root@ruanwenwu02 ~]# xzcat anaconda-ks.cfg.xz |head -n
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512

五、zip命令

zip命令和上面几个压缩已命令有些区别,因为它可以压缩目录。它不单可以压缩,还可以打包。

例如,gzip命令不能压缩目录:

[root@ruanwenwu02 ~]# gzip
gzip: is a directory -- ignored

使用zip压缩目录:

[root@ruanwenwu02 ~]# zip .zip
adding: / (stored %)
[root@ruanwenwu02 ~]# zip -r 1bak.zip
adding: / (stored %)
adding: // (stored %)
adding: /// (stored %)
adding: //// (stored %)
adding: //.txt (stored %)
adding: //.txt (stored %)
adding: /.txt (stored %)
[root@ruanwenwu02 ~]# unzip -d / .zip
Archive: .zip
creating: //
[root@ruanwenwu02 ~]# cd /
[root@ruanwenwu02 ]# ls [root@ruanwenwu02 ]# cd
[root@ruanwenwu02 ]# ls

代码说明:如果我们不加-r参数,打进去的只是一个空目录。这段代码也说明了如何解压一个zip文件。那就是unzip命令。-d参数是指定解压地址。

zip除了可以压缩一个目录之外,它还可以把多个文件同时打包:

[root@ruanwenwu02 ~]# zip .zip .tar anaconda-ks.cfg.xz
adding: .tar (deflated %)
adding: anaconda-ks.cfg.xz (stored %)
[root@ruanwenwu02 ~]# zip .zip .tar
adding: / (stored %)
adding: .tar (deflated %)
[root@ruanwenwu02 ~]# zip -r .zip .tar
adding: / (stored %)
adding: // (stored %)
adding: /// (stored %)
adding: //// (stored %)
adding: //.txt (stored %)
adding: //.txt (stored %)
adding: /.txt (stored %)
adding: .tar (deflated %)

六、tar

tar命令是一个打包命令。它的使用和zip有点相似。

[root@ruanwenwu02 ~]# tar cvf .tar *.zip
1bak.zip
.zip
.zip
.zip
.zip

解压缩:

[root@ruanwenwu02 ~]# tar xvf .tar -C
1bak.zip
.zip
.zip
.zip
.zip
[root@ruanwenwu02 ~]# tree ├── 1bak.zip
├── .zip
├── .zip
├── .zip
└── .zip directories, files

-C是指定解压缩的目录。

tar命令压缩目录不需要加额外的参数:

[root@ruanwenwu02 ~]# ls
1bak.zip .tar .zip .tar .zip .zip .zip anaconda-ks.cfg.xz
[root@ruanwenwu02 ~]# tar cvf .tar .zip
/
//
///
////
//.txt
//.txt
/.txt
.zip

查看tar包:

[root@ruanwenwu02 ~]# tar tf .tar
/
//
///
////
//.txt
//.txt
/.txt
.zip

tar命令可以配合参数实现打包的同时并压缩。压缩支持gzip压缩和bzip2压缩。

tar.gz格式压缩并打包:

[root@ruanwenwu02 ~]# tar zcvf .tar.gz  .zip
/
/1bak.zip
/.zip
/.zip
/.zip
/.zip
.zip
[root@ruanwenwu02 ~]# ls
1bak.zip .tar .zip .tar .tar.gz .zip .tar .zip .zip anaconda-ks.cfg.xz
[root@ruanwenwu02 ~]# tar tf .tar.gz
/
/1bak.zip
/.zip
/.zip
/.zip
/.zip
.zip

tar.gz解压缩:

[root@ruanwenwu02 ~]# mkdir
[root@ruanwenwu02 ~]# tar zxvf .tar.gz -C /
/
/1bak.zip
/.zip
/.zip
/.zip
/.zip
.zip
[root@ruanwenwu02 ~]# tree ├──
│ ├── 1bak.zip
│ ├── .zip
│ ├── .zip
│ ├── .zip
│ └── .zip
└── .zip directory, files

tar.bzip2格式压缩:

[root@ruanwenwu02 ~]# tar jcvf .tar.bip2 .tar
.tar
/
/1bak.zip
/.zip
/.zip
/.zip
/.zip
[root@ruanwenwu02 ~]# ls
.tar .zip .tar.bip2 anaconda-ks.cfg.xz
1bak.zip .zip .tar .tar.gz .tar .zip .zip

上面的例子写错了,应该是tar jcvf 4.tar.bz2。

tar.biz2解压缩:

[root@ruanwenwu02 ~]# tar jxvf .tar.bip2 ^C
[root@ruanwenwu02 ~]# mkdir
[root@ruanwenwu02 ~]# tar jxvf .tar.bip2 -C /
.tar
/
/1bak.zip
/.zip
/.zip
/.zip
/.zip

上面的代码说明,即使我们写错了后缀(4.tar.bip2)也没有影响的。

如果我们在打包的时候想排除一些文件怎么办呢?

[root@ruanwenwu02 ~]# tar cvf .tar  --exclude .txt --exclude /.txt
/
//
///
////
[root@ruanwenwu02 ~]# tar tf .tar
/
//
///
////

七、常见习题

7.1. gzip, bzip2 能否直接压缩目录呢?
不能直接压缩目录

7.2. 请快速写出,使用gzip和bzip2压缩和解压一个文件的命令。
gzip 1.txt
gzip -d 1.txt.gz
bzip2 1.txt
bzip2 -d 1.txt.bz2

7.3. tar 在打包的时候,如果想排除多个文件或者目录如何操作?
tar cvf 123.tar --exclude a.txt --exclude b.txt 123/

7.4. 请实验,如果不加 "-" 是否正确, 如 tar zcvf  1.tar.gz  1.txt 2.txt ?
不加 - 一样没有问题

7.5. 如何使用tar打包和解包 .tar.gz, .tar.bz2 的压缩包?
tar zcvf  1.tar.gz 1
tar zxvf 1.tar.gz
tar jcvf 1.tar.bz2 1
tar jxvf 1.tar.bz2

7.6. 找一个大点的文件,使用tar 分别把这个文件打成 .tar.gz和.tar.bz2 压缩包,比较一下哪个包会更小,从而得出结论,是gzip压缩效果好还是bzip2压缩效果好?
理论上.tar.bz2的压缩包小一些,但个别时候,有相反的情况。但大多时候bzip2压缩效果好。

7.7. 使用tar打包并压缩的时候,默认压缩级别为几? 想一想如何能够改变压缩级别呢?(提示,tar本身没有这个功能哦,可以尝试拆分打包和压缩)
tar打包压缩时,是按照gzip和bzip2的默认压缩级别来的,gzip工具默认压缩级别为6,bzip2默认压缩级别为9.
改变默认压缩级别可以这样来做,首先tar打包,然后再使用gzip或者bzip2压缩工具来压缩,压缩的时候指定压缩级别。如:  tar cvf 1.tar 123/;  gzip -2 1.tar

Linux学习(十七)压缩与打包的更多相关文章

  1. linux tar命令 压缩、打包、解压 详解

    linux tar命令 压缩.打包.解压 详解 1.常用压缩命令 tar –czvf 压缩后的文件.tar.gz 要压缩的文件 2.常用解压命令 tar –xzvf 解压后的文件.tar.gz [要解 ...

  2. Linux 学习 (五) 压缩与解压缩命令

    Linux达人养成计划 I 学习笔记 常用压缩格式:.zip | .gz | .bz2 | .tar.gz | .tar.bz2 .zip zip 压缩文件名 源文件:压缩文件 zip -r 压缩文件 ...

  3. Linux学习之五——压缩与备份

    一.Linux下常见的压缩文件 *.Z compress 程序压缩的档案(现在不流行了,用gzip也能解压): *.gz gzip 程序压缩的档案: *.bz2 bzip2 程序压缩的档案: *.ta ...

  4. Linux下 目录 压缩 解压缩 打包

    http://blog.sina.com.cn/s/blog_7479f7990100zwkp.html tar -zcvf /home/xahot.tar.gz /xahot    tar -zcv ...

  5. Linux基础命令---压缩与打包

    GZIP: 普通文件打包成gzip文件:gzip filename(问题:如何测试一个文件是否是gzip文件?) gzip文件解压成普通文件:gzip -d filename(副作用:原始gz文件会被 ...

  6. Linux下文件压缩与打包

    Linux常用压缩命令compresscompress压缩出来的文件的后缀是.Z,解压命令是ucompresscompress -c 文件 > 压缩后的文件名 ,选项-v显示压缩过程,选项-c的 ...

  7. linux中文件压缩与打包

    一.常见的压缩命令 在linux环境中,压缩文件的扩展名大多是*.tar,*.tar.gz,*.tgz,*.gz,*.Z,*.bz2,首先我们来介绍以下这些压缩文案的扩展名:. *.Z:compres ...

  8. linux 学习随笔-压缩和解压缩

    .gz 由gzip压缩工具压缩的文件 .bz2 由bzip2压缩工具压缩的文件 .tar 由tar打包程序打包的文件 .tar.gz 先由tar打包,gzip压缩 .tar.bz2 先由tar打包,b ...

  9. 3.Linux 文件的压缩与打包

    1.常用压缩打包命令 常用的压缩打包扩展名为如下: *.Z compress 程序压缩的文件,非常老旧了,不再细说 *.gz gzip 程序压缩的文件: *.bz2 bzip2 程序压缩的文件: *. ...

  10. Linux学习十七、正规表达式练习题

    情境模拟题一:透过 grep 搜寻特殊字串,并配合数据流重导向来处理大量的文件搜寻问题. 目标:正确的使用正规表示法: 前提:需要了解数据流重导向,以及透过子命令 $(command) 来处理档名的搜 ...

随机推荐

  1. PYTHON 函数局部变量和全局变量

    有这样一段PYTHON代码,从事C语言开发的人都知道,如果定义了全局变量,而函数内没有定义同名的函数变量的话,那么在函数内对该变量的赋值就是对全局变量空间数值的修改, 然后在PYTHON中却不尽相同, ...

  2. Dijkstra堆优化学习

    最短路径例题 今天特地学习了Dijkstra的堆优化(主要是慕名已久). 我们需要一个堆来记录[编号,到编号这个点的最短路径值(当然只是当前的)] 与原来的Dijkstra操作基本一致,主要有以下几点 ...

  3. ASP.NET Core 认证与授权[1]:初识认证

    在ASP.NET 4.X 中,我们最常用的是Forms认证,它既可以用于局域网环境,也可用于互联网环境,有着非常广泛的使用.但是它很难进行扩展,更无法与第三方认证集成,因此,在 ASP.NET Cor ...

  4. E - 钱币兑换问题

          在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法.请你编程序计算出共有多少种兑法. Input每行只有一个正整数N,N小于32768. Output对应每个输入,输出兑换方 ...

  5. java集合系列——List集合之LinkedList介绍(三)

    1. LinkedList的简介 JDK 1.7 LinkedList是基于链表实现的,从源码可以看出是一个双向链表.除了当做链表使用外,它也可以被当作堆栈.队列或双端队列进行操作.不是线程安全的,继 ...

  6. JSON依赖的选择

    json-lib 源码:https://github.com/aalmiray/Json-lib/ 最新版本:2.4 不再更新 <dependency> <groupId>ne ...

  7. 使用javaAPI操作hdfs

    欢迎到https://github.com/huabingood/everyDayLanguagePractise查看源码. 一.构建环境 在hadoop的安装包中的share目录中有hadoop所有 ...

  8. GCD hdu1695容斥原理

    GCD Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  9. sql sever 基础知识及详细笔记

    第六章:程序数据集散地:数据库 6.1:当今最常用的数据库 sql  server:是微软公司的产品 oracle:是甲骨文公司的产品 DB2:数据核心又称DB2通用服务器 Mysql:是一种开发源代 ...

  10. fitnesse - 一个简单的例子(slim)

    fitnesse - 一个简单的例子(slim) 2017-09-30 目录1 编写测试代码(Fixture code)2 编写wiki page并运行  2.1 新建wikiPage  2.2 运行 ...