压缩

   1,为什么压缩?

   当需要存储大量文件时,为了节省磁盘空间;或是要通过网络传输文件时,为了节省网络带宽,我们都需要对文件进行压缩使其体积减小。

  2,有哪些常用压缩命令和压缩格式?

  常见的压缩命令有:gzip,bz2,xz.

  他们所对应的压缩格式分别为:xx.gz, xx.bz, xx.xz

  3,常用命令的详细使用

       (1.1)、gzip

NAME        gzip, gunzip, zcat - compress or expand files                SYNOPSIS        gzip [ -acdfhlLnNrtvV19 ] [-S suffix] [ name ...  ]        gunzip [ -acfhlLnNrtvV ] [-S suffix] [ name ...  ]        zcat [ -fhLV ] [ name ...  ]

     最简单的使用就是gzip filename

     如:# gzip 123.txt

     结果就是123.txt.gz

     这个命令有如下常用选项:

     -#:指定压缩比例

     -c:输出在屏幕,这个选项很有用,但是并不是真正用于输出在屏幕,而是有更有意义的用途。gzip 压缩和解压缩时是不能保留源文件的,也就是当对test.txt压缩成test.txt.gz后,原来的test.txt就不存在了。那如何保留源文件的,那就用-c选项,将文件压缩或解压后输出在屏幕,然后重定向到指定文件中

  [root@localhost ~]# ls 123*  123.txt  [root@localhost ~]# gzip -c 123.txt>123.txt.gz  [root@localhost ~]# ls 123*  123.txt  123.txt.gz  [root@localhost ~]#

     -d:解压缩,这个选项就等价于gunzip命令

     gzip -d 123.txt.gz = gunzip 123.txt.gz

       (1.2)、gunzip

         这个命令上面已经说过,对gzip压缩的文件解压。

       (1.3)、zcat

         这个命令和cat很类似,用于查看gzip压缩后的压缩文件

         如:zcat 123.txt.gz

      (2.1)、bzip2

  NAME             bzip2, bunzip2 - a block-sorting file compressor, v1.0.4             bzcat - decompresses files to stdout             bzip2recover - recovers data from damaged bzip2 files          SYNOPSIS             bzip2 [ -cdfkqstvzVL123456789 ] [ filenames ...  ]             bunzip2 [ -fkvsVL ] [ filenames ...  ]             bzcat [ -s ] [ filenames ...  ]             bzip2recover filename

       

       这个命令最基本使用为bzip2 filename

[root@localhost ~]# ls 123*    123.txt    [root@localhost ~]# bzip2 123.txt    [root@localhost ~]# ls 123*    123.txt.bz2    [root@localhost ~]#

       有如下常用选项

       -c:输出在屏幕,和gzip的-c选项相同

       -#:指定压缩比例

       -k:保留源文件

[root@localhost ~]# ls 123*    123.txt    [root@localhost ~]# bzip2 -k 123.txt    [root@localhost ~]# ls 123*    123.txt  123.txt.bz2    [root@localhost ~]#

       -d:解压缩,bzip2 -d 123.txt.bz2 相当于 bunzip 123.txt.bz2

       (2.2) bunzip

       对bzip2压缩的文件进行解压缩

[root@localhost ~]# ls 123*        123.txt.bz2        [root@localhost ~]# bunzip2 123.txt.bz2        [root@localhost ~]# ls 123*        123.txt        [root@localhost ~]# bzip2 123.txt        [root@localhost ~]# ls 123*        123.txt.bz2        [root@localhost ~]# bzip2 -d 123.txt.bz2        [root@localhost ~]# ls 123*        123.txt        [root@localhost ~]#

       (2.3) bzcat

       这个命令gzip对应的zcat一样用于查看bzip2创建的压缩文件

       

       (3.1) xz

NAME               xz, unxz, xzcat, lzma, unlzma, lzcat - Compress or decompress .xz and .lzma files                SYNOPSIS               xz [option]...  [file]...                       unxz is equivalent to xz --decompress.               xzcat is equivalent to xz --decompress --stdout.               lzma is equivalent to xz --format=lzma.               unlzma is equivalent to xz --format=lzma --decompress.               lzcat is equivalent to xz --format=lzma --decompress --stdout.                       When  writing  scripts that need to decompress files, it is recommended to always use       the name xz with appropriate arguments (xz -d or xz -dc) instead of  the  names  unxzand xzcat.

   简单例子:

[root@localhost ~]# ls 123*    123.txt    [root@localhost ~]# xz 123.txt    [root@localhost ~]# ls 123*    123.txt.xz    [root@localhost ~]#

       与前面两个命令类似,常用选项如下

       -c:输出到屏幕

       -d: 解压缩

   (3.2) unxz

       对xz的压缩文件解压缩

       unxz 等同于 xz -d

  (3.3) xzcat

       查看xz压缩的压缩文件

归档

   归档也就是打包,通常将大量零散文件打包成一个文件,方便存盘和传输

   linux中文件归档常用的命令是tar,这个命令非常强大,集成打包,解包,压缩,解压缩等功能与一身,所以掌握好这个命令就可以玩转对文件的打包和压缩操作。

NAME       tar - manual page for tar 1.23SYNOPSIS       tar [OPTION...] [FILE]...DESCRIPTION       GNU  ‘tar’  saves  many  files  together  into a single tape or disk archive, and can       restore individual files from the archive.EXAMPLES       tar -cf archive.tar foo bar              # Create archive.tar from files foo and bar.       tar -tvf archive.tar              # List all files in archive.tar verbosely.       tar -xf archive.tar              # Extract all files from archive.tar.    Main operation mode:       -A, --catenate, --concatenate              append tar files to an archive              追加文件到一个打包文件之中       -c, --create              create a new archive              创建一个新的打包文件       -d, --diff, --compare              find differences between archive and file system       --delete              delete from the archive (not on mag tapes!)       -r, --append              append files to the end of an archive       -t, --list              list the contents of an archive              列出一个归档包文件中包含的所有文件       --test-label              test the archive volume label and exit       -u, --update              only append files newer than copy in archive       -x, --extract, --get              extract files from an archive              对现有打包文档进行解包       -C, --directory=DIR              change to directory DIR              指定路径       -f, --file=ARCHIVE              use archive file or device ARCHIVE              指定文件       -j, --bzip2              filter the archive through bzip2              调用bzip2命令对文档包压缩或者解压        -J, --xz              filter the archive through xz              调用xz命令对文档包压缩或者解压       -p, --preserve-permissions              extract  information  about  file permissions (default for superuser)       -v, --verbose              verbosely list files processed              显示过程       -z, --gzip              filter the archive through gzip              调用gzip命令对文档包压缩或者解压

  用法:

       创建归档

           tar [选项] 包文件名  文件列表

[root@localhost ~]# ls        1.txt  2.txt  3.txt  4.txt        [root@localhost ~]# tar -cf test.tar 1.txt 2.txt 3.txt 4.txt        [root@localhost ~]# ls        1.txt  2.txt  3.txt  4.txt  test.tar        [root@localhost ~]#

       解开归档

           tar [选项]  包文件名  解开后存放路径

[root@localhost ~]# mkdir demo        [root@localhost ~]# tar -xf test.tar -C demo/        [root@localhost ~]# ls demo/        1.txt  2.txt  3.txt  4.txt        [root@localhost ~]#

       常用选项说明

       -c:用于创建打包文档

       -x:用于对归档文件解包

       所以-c和-x是二选一

       -f:指定文件,当创建归档时,用于指定打包之后的文件名,当解包是,用于指定将要解开的归档文件,值得注意的是,当将多个选项缩写时,-f一定要放最后。

       -C:在对归档文件解包时,指定解开之后文件的存放位置,默认为当前目录

       

       -z:创建归档文件后调用gzip命令对其压缩

[root@localhost ~]# ls    1.txt  2.txt  3.txt  4.txt  demotxt    [root@localhost ~]# tar -czf test.tar.gz 1.txt 2.txt 3.txt 4.txt    [root@localhost ~]# ls    1.txt  2.txt  3.txt  4.txt  demo  test.tar.gz    [root@localhost ~]# tar -xzf test.tar.gz -C demo/    [root@localhost ~]# ls demo/    1.txt  2.txt  3.txt  4.txt    [root@localhost ~]#

       在上面的操作中,对test.tar.gz解压展开式,可以不指定-z选项,因为系统会自动-z选项

       

       -j:创建归档文件后调用bzip2命令对其压缩

       -J:创建归档文件后调用xz命令对其压缩

       这两个选项和上面-z类似,使用相同

【【干货】】

       在日常使用中,我们很少只对一个普通文件进行压缩,也很少对文档只打包不压缩。通常都是对文件即打包又压缩。而且通常在网上下载的文档都是xx.tar.gz或者xx.tar.bz2。所以就在这里列出这些常规操作

       创建xx.tar.gz

tar -czf xx.tar.gz filename ...

       展开xx.tar.gz

tar -xf  xx.tar.gz [ -C SavePath ]

       

       创建xx.tar.bz2

tar -cjf xx.tar.bz2 filename ...

       展开xx.tar.bx2

tar -xjf xx.tar.bz2 [ -C SavePath ]

       

       创建xx.tar.xz

tar -cJf xx.tar.xz filename ...

       展开xx.tar.xz

tar -xJf xx.tar.xz [ -C SavePath ]