压缩指令

上一篇 / 下一篇  2009-04-09 15:28:47 / 个人分类:Linux/Unix

常见的压缩文件后缀名:

  • *.Z       compress程序压缩的文件;
  • *.bz2     bzip2程序压缩的文件;
  • *.gz      gzip程序压缩的文件;
  • *.tar     tar程序打包的数据,没有经过压缩;
  • *.tar.gz  tar程序打包的数据,且经过压缩。

以下是各个压缩程序的使用方法:

  • compress / uncompress / zcat

    语法: 

    compress -参数 filename

    参数说明:

    -d : 解压缩参数;

    范例:

    先复制/etc/man.config到/root下,再将其压缩

    cp /etc/man.config /root

    compress /etc/man.config     将man.comfig压缩为man.config.Z

    compress -d man.config.Z     将man.config.Z解压为man.config

    uncompress man.config.Z      解压缩文件(结果跟compress -d相同)

    zcat man.config.Z            无需解压直接查看文件内容

    总结:compress是用来压缩和解压缩后缀名为*.Z的文件的指令,通过compress压缩文件时,会自动将其后缀指定为.Z。注意:用compress压缩文件,如果没有指定参数,则原始文件会被压缩后的*.Z文件取代。compress -d 和 uncompress 都是用来解压缩文件;zcat用于直接查看压缩文件内容--无需解压缩文件。

  • bzip2 / unbzip2 / bzcat

     语法:

     bzip2 -参数 filename   压缩或解压文件

     unbzip2 filename      解压文件,等同于bzip2 -d

     bzcat *.bz2           不解压文件直接查看文件内容

     参数说明:

     -d : 解压缩

     -z : 压缩

     通过compress解压文件时的文件格式:

     filename.bz2    becomes     filename

     filename.bz     becomes     filename

     filename.tbz2   becomes     filename.tar

     filename.tbz    becomes     filename.tar

     anyothername    becomes     anyothername.out

     范例:

     bzip2 -z man.config      将man.config压缩为man.config.bz2

     bzcat man.config.bz2     直接查看压缩man.config文件的内容--无需解压缩

     bzip2 -d man.config.bz2  将man.config.bz2解压为man.config

     bunzip2 man.config.bz2   效果同bzip2 -d

     总结:通过bzip2压缩文件时,自动将其后缀指定为.bz2。注意:通过bzip2 -z 压缩文件后,原文件会被压缩后的.bz2文件取代。如果需要不解压文件直接读取文件内容,可以使用bzcat指令,可以使用bzip2 -d或unbzip2来解压文件。 

  • gzip,zcat

      语法:

      gzip -参数 filename    压缩或解压缩文件

      zcat filename.gz         无需解压文件直接查看filename文件内容

      参数说明:

      -d : 解压缩

      -# : 压缩等级,1最不好,9最好,6为默认级别

      范例:

      gzip man.config     将man.config压缩为man.config.gz文件

      zcat man.config.gz  直接读取man.config文件的内容

      gzip -d man.config.gz  将man.config.gz解压缩为man.config

      gunzip man.config.gz   效果同gzip -d

      gzip -9 man.config    以最大压缩比压缩man.config文件

      总结:gzip用来压缩和解压缩后缀名为*.gz的文件。另外,gzip提供压缩比的服务,-1压缩比最差,但是速度很快,-6为默认压缩比,-9压缩比最佳(压缩后的文件比较小),但是速度较慢。通过zcat指令可以直接读取压缩文件的内容。

  • tar

      语法:

      tar [-zxcvfpP] filename

      tar -N 'yyyy/mm/dd' /path -zcvf target.tar.gz source

      参数说明:

      -z : 是否用gzip进行压缩

      -x : 解压缩

      -c : 压缩

      -t : 查看tarfile里面的文件

      -v : 压缩过程中显示文件

      -f : 使用文件名

      -p : 使用原文件的属性(属性不会依据用户而改变)

      -P : 使用绝对路径

      -N : 比其后接的(yyyy/mm/dd)时间新的文件才会被打包进新的文件中

      --exclude file : 在压缩过程中,不要将file打包

      范例:

      tar -cvf directory.tar directory  将directory目录打包成果以个文件

      tar -zcvf directory.tar.gz directory 除了将directory目录打包外,同时用gzip进行压缩成名为directory.tar.gz的文件

      tar -zxvf file.tar.gz /home/test/*  将/home/test目录下的所有文件打包并用gzip压缩成一个名为file.tar.gz的文件

      tar -xvf directory.tar  解压tar包,注意:因为没有经过gzip压缩,所以不需要指定参数z,否则会有问题

      tar -zxvf directory.tar.gz 通过文件后缀名判断--该文件经过gzip压缩,所以需要指定参数z

      tar -ztvf directory.tar.gz 参数t可用来查看tar包中的文件信息,不要解压缩

      tar -zcvf home.tar.gz -P /home  大写P参数--压缩后的文件的路径均为绝对路径

      tar -N '2002/6/22' -zcvf home.tar.gz /home  在home目录中,日期比2002/6/22还要新的文件才会被打包到home.tar.gz中

      tar -zcvf host.tar.gz / --exclude /mnt --exclude /proc  将根目录中的数据都打包到host.tar.gz中,除了/mnt和/proc目录中的数据

      tar -cvf - /home |  tar -xvf -   将/home打包后,直接解压缩在当前工作目录下,不需要建立中间文件,使用该语法最好是用绝对路径,不容易出现问题---适用于不想产生中间文件的情况

      总结:

  1. 之前提到的compress和gzip只适用于压缩文件,不能对目录进行压缩,而tar可以将整个目录或文件整个成一个文件;
  2. 需要用绝对路径来打包文件--用参数大写P,参数小写p---被打包的文件不会依据用户的身份而改变全县;
  3. -N参数,参开上面的例子,直到该参数中日期很重要,在备份时,需要备份较新的文件时,就可用该参数;
  4. 最后一个例子,直接以管线命令进行压缩和解压缩,比如:要将/home下的文件复制到当前工作目录,可以使用cp -r,也可以使用上面例子中的指令;
  5. tar的功能很多,它是经由打包之后再处理的过程。 常听到的tarball文件就是经由tar打包再压缩的文件。此外,tar也可用在备份的存储媒体上,最常见的就是磁带机。假设,磁带机编号为/dev/st0,想要将/home下的数据在磁带机上做备份,既可用 tar /dev/st0 /home。
  6. 在linux中,gzip已整合到tar中,但是SUN或者其他版本较旧的UNIX版本中tar并没有整合gzip,所以解压缩需要分2步:

     gzip -d test.tar.gz   先解压所

     tar -xvf test.tar   解出数据

   7. 使用tar压缩或解压缩时,原文件都存在。

  • cpio

      语法:

      cpio -covB > [file.device]    <=====备份

      cpio -icduv < [file/device]   <=====还原

      参数说明:

      -o:将文件复制输出到文件或设备上

      -i:将数据自文件或设备复制出到系统中

      -t:查看cpio建立的文件或设备的内容

      -c:以一种较新的便携格式(portable fromat)存储

      -v:在存储过程中文件名可以在屏幕上显示

      -B:让默认的Blocks可以增致5120bytes,默认是512bytes,这样可以使大文件的存储速度加快

      -d:自动建立目录,由于cpio的内容可能不在同一个目录内,如此再反备份中可能出现问题,这时候就可用-d参数自动建立所需要的目录

      -u:自动用较新的文件替换较旧的文件

      范例:

      find / -print | cpio -covB > /dev/st0

      将搜寻到的文件存储到磁带机

      cpio -icduv < /dev/st0

      将磁带机中的数据还原回来

      cpio -icduv < /dev/st0 > /tmp/content

      将磁带机的内容转存到/tmp/content中

      find / -type -f | cpio -o > /tmp/root.cpio

      cpio -i < /tmp/root.cpio

      先将搜索结果输出到/tmp/root.cpio文件然后再还原回来

      总结:

      cpio最适用于文件备份,它不想cp--可以直接将文件复制过去,例如,cp * /tmp---将所在目录的所有文件复制到/tmp目录下。cpio无法直接读取文件,而是记录每个文件的路径连同文件名。cpio最常跟find指令一起使用。cpio可以备份任何文件,连同/dev下的任何设备文件。由于cpio必须要配合其他程序(如find)建立文件名,所以cpio与管线命令以及命令重定向的相关性相当重要。总体来说,cpio的作用就是备份和还原。

     


TAG:

 

评分:0

我来说两句

Open Toolbar