Linux——压缩文件

为什么需要压缩文件?
    文件在传输过程中,可能由于文件过大,传输所需时间过多。减少文件大小有两个明显的好处,一是可以减
    少存储空间,二是通过网络传输文件时,可以减少传输的时间。对于某些不常用文件,减少它对硬盘空间的
    浪费,我们往往会将其压缩,在需要时再解压缩。
   
   
Linux中有哪些文件压缩命令?
    在Linux中,提供了许多文件压缩命令,针对所需要压缩的文件不同,我们可以选用不同的压缩方式。
    压缩格式:gz bz2 xz zip z
    根据不同的压缩算法,压缩比也不同。
   
压缩命令详解:
   
    gzip: FILE.gz
    gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中
    比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。
   
    语法格式:gzip 选项 参数
   
    常用选项:
        -a或——ascii:使用ASCII文字模式;
    -d或--decompress或----uncompress:解开压缩文件;
    -f或——force:强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接;
    -l或——list:列出压缩文件的相关信息;
    -n或--no-name:压缩文件时,不保存原来的文件名称及时间戳记;
    -N或——name:压缩文件时,保存原来的文件名称及时间戳记;
    -q或——quiet:不显示警告信息;
    -r或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
    -S或<压缩字尾字符串>或----suffix<压缩字尾字符串>:更改压缩字尾字符串;
    -t或——test:测试压缩文件是否正确无误;
    -#<压缩比>:压缩比是一个介于1~9的数值,默认值为 6 ,指定的数值越大,压缩效率就会愈高;
    --best:此参数的效果和指定“-9”参数相同;
    --fast:此参数的效果和指定“-1”参数相同。
  
  [wangml@iZwz976helaylvgqok97prZ scourse]$ ls
  passwd
  [wangml@iZwz976helaylvgqok97prZ scourse]$ gzip *
  [wangml@iZwz976helaylvgqok97prZ scourse]$ ls
  passwd.gz
  [wangml@iZwz976helaylvgqok97prZ scourse]$ gzip -d *
  [wangml@iZwz976helaylvgqok97prZ scourse]$ ls
  passwd
  
  默认情况下,源文件在被压缩完后会被删除
  
  zcat: 在不解压的情况下,查看被gzip压缩的文本文件的内容。
  
  
  bzip2: FILE.bz2
  bzip2比gzip有更大的压缩比,使用格式近似。
  语法格式:bzip2 选项 参数
  常用选项:
    -c或——stdout:将压缩与解压缩的结果送到标准输出;
    -d或——decompress:执行解压缩;
    -f或-force:bzip2在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件。若要覆盖。请使用此参数;
    -k或——keep:bzip2在压缩或解压缩后,会删除原始文件。若要保留原始文件,请使用此参数;
    -s或——small:降低程序执行时内存的使用量;
    -v或——verbose:压缩或解压缩文件时,显示详细的信息;
    -z或——compress:强制执行压缩;
    -#<压缩比>:压缩比是一个介于1~9的数值,默认值为 6 ,指定的数值越大,压缩效率就会愈高;
  
  bunzip2 文件: 解压缩 .bz2 文件
  
  bzcat:在不解压的情况下,查看被bzip2文本文件的内容。
  
  
  xz:FILE.xz
  压缩比更大
  语法格式:xz 选项 参数
  常用选项:
      -d:解压缩
      -#<压缩比>:压缩比是一个介于1~9的数值,默认值为 6 ,指定的数值越大,压缩效率就会愈高;
      -k:压缩时保留源文件,也可以使用输出重定向保留源文件
     
  unxz:解压缩
  
  xzcat:在不解压的情况下,查看被xz文本文件的内容,同xzdec
  
  
  zip:可以用来解压缩文件,或者对文件进行打包操作。zip是个使用广泛的压缩程序,文件经它压缩后会另外
  产生具有“.zip”扩展名的压缩文件。
  
  语法格式:zip 压缩后的文件名 要压缩的文件
  
  常用选项:
    -A:调整可执行的自动解压缩文件;
    -b<工作目录>:指定暂时存放文件的目录;
    -c:替每个被压缩的文件加上注释;
    -d:从压缩文件内删除指定的文件;
    -D:压缩文件内不建立目录名称;
    -f:此参数的效果和指定“-u”参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩
        文件内,使用本参数会一并将其加入压缩文件中;
    -F:尝试修复已损坏的压缩文件;
    -g:将文件压缩后附加在已有的压缩文件之后,而非另行建立新的压缩文件;
    -i<范本样式>:只压缩符合条件的文件;
    -j:只保存文件名称及其内容,而不存放任何目录名称;
    -J:删除压缩文件前面不必要的数据;
    -k:使用MS-DOS兼容格式的文件名称;
    -l:压缩文件时,把LF字符置换成LF+CR字符;
    -ll:压缩文件时,把LF+cp字符置换成LF字符;
    -m:将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中;
    -n<字尾字符串>:不压缩具有特定字尾字符串的文件;
    -o:以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同;
    -q:不显示指令执行过程;
    -r:递归处理,将指定目录下的所有文件和子目录一并处理;
    -S:包含系统和隐藏文件;
    -t<日期时间>:把压缩文件的日期设成指定的日期;
    -T:检查备份文件内的每个文件是否正确无误;
    -u:更换较新的文件到压缩文件内;
    -v:显示指令执行过程或显示版本信息;
    -V:保存VMS操作系统的文件属性;
    -w:在文件名称里假如版本编号,本参数仅在VMS操作系统下有效;
    -x<范本样式>:压缩时排除符合条件的文件;
    -X:不保存额外的文件属性;
    -y:直接保存符号连接,而非该链接所指向的文件,本参数仅在UNIX之类的系统下有效;
    -z:替压缩文件加上注释;
    -$:保存第一个被压缩文件所在磁盘的卷册名称;
    -<压缩比>:压缩比是一个介于1~9的数值。 
    
    unzip:解压缩
   
   
打包和压缩的区别?
    打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
   
    
为什么要区分这两个概念呢?
    这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆
    文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip、bzip2命令)。
   
   
归档工具:
    tar:默认不储存扩展属性
    利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的
    文件。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合
    成为一个文件以便于网络传输是非常有用的。
   
    语法格式:tar 选项 参数
   
    常用选项:
        -c: 创建归档文件
        -x:展开归档文件
        -f:操作归档文件
        --xattrs: 归档时,保留文件扩展属性信息
        -t:不展开归档,只查看归档了哪些文件
        -zcf:归档并调用gzip压缩
        -zxf:调用gzip压缩再归档
        -jcf:归档并调用bzip2压缩
        -jxf:调用bzip2压缩再归档
        -Jcf:归档并调用xz压缩
        -Jxf:调用xz压缩再归档

    cpio: 归档工具