Linux 文件归档与压缩

646 阅读2分钟

归档

归档(archiving)就是将许多文件(或目录)打包成一个文件。

归档的目的就是方便备份、还原及文件的传输操作。

Linux 操作系统的标准归档命令是 tar(来自 tape archive)。

tar 命令的功能是将多个文件(也可有目录)放在一起存放到一个磁带或磁盘归档文件中,并且将来可以根据需要只还原归档文件中的某些指定的文件。

tar 命令默认并不进行文件的压缩。

tar [选项]... [归档文件名]...
    必须至少使用如下选项中的一个:
        c:创建一个新的tar文件。
        t:列出tar文件中内容的目录。
        x:从tar文件中抽取文件。
        f:指定归档文件或磁带(也可能是软盘)设备(一般都要选)
            (在RHEL 4之前的版本中规定在f选项之后必须紧跟着文件名而不能再加其他参数,
                但是从RHEL 4开始已经取消了这一限制。)
以下为可选的选项:
        v:显示所打包的文件的详细信息(v是verbose)
                (执行过程中会显示所有打包的文件和目录)
        z:使用gzip压缩算法来压缩打包后的文件。
                「$ tar cvfz arch.tar.gz dir2arch」
        j:使用bzip2压缩算法来压缩打包后的文件。
                「$ tar cvfj arch.tar.bz2 dirarch」
【注意】在tar命令中,所有的选项之前都不能使用前导的“-”。

创建新的归档文件

创建新的归档文件使用带 c[v]f 参数的 tar 命令:

$ tar  cvf  arch.tar  dir2arch    # File to be archived should be a RELATIVE path
dir2arch/
dir2arch/learning.txt
dir2arch/name.txt
...

查看归档文件内容

查看归档文件内容用带 t[v]f 参数的 tar 命令:

$ tar tf arch.tar
dir2arch/
dir2arch/learning.txt
dir2arch/name.txt 
...

可以在 tar 命令中再加入 v 来显示文件更加详细的信息(类似于 ls -l):

$ tar tvf arch.tar
drwxrwxr-x User/User           0 2010-02-04 05:09:43 dir2arch/
-rw-r--r--   User/User        4720 2010-02-04 05:07:22 dir2arch/learning.txt
-rw-rw-r--   User/User          84 2010-02-04 05:07:22 dir2arch/name.txt 
...

解开打包好的文件

解开打包好的文件用带 x[v]f 参数的 tar 命令

⚠️ 解开前要将工作目录切换到打包时所在的目录,才能保证抽取的文件放回到原来的位置。

$ tar xvf arch.tar
dir2arch/
dir2arch/learning.txt
dir2arch/name.txt
dir2arch/flowers.JPG
dir2arch/dog.JPG
...

压缩

进行文件压缩的主要目的是缩小文件的大小。

  • 一般对正文文件进行压缩之后,文件的大小可以被压缩大约75%。
  • 但是二进制的文件,如图像文件通常不会被压缩多少。

下面介绍 Linux 系统中两组常用的压缩工具 gzip 和 bzip2。

gzip

gzip 和 gunzip 是 Linux 系统上标准的压缩和解压缩工具,gzip对正文文件的压缩比一般超过75%.

gzip \ gunzip <-> [*.gz]

注意:

  • 用gzip不能压缩目录
  • gzip 来压缩文件,就必须使用 gunzip 来解压缩。
gzip [选项] [压缩文件名…]
        若不用-c则会压缩源文件(把原来多foo.txt变成一个foo.txt.gz)
        -v:在屏幕上显示出文件的压缩比(v是verbose的第1个字母)。
        -c:保留原来的文件,而新创建一个压缩文件(要重定向出来),其中压缩文件名以.gz结尾。
                (gzip -vc bar.txt > foobar.gz

解压缩时,输入 gunzip 空格后跟要解压缩的文件,如 gunzip arch.gz

bzip2

bzip2 & bunzip2 是Linux系统上比较新的压缩和解压缩工具,通常 bzip2 对归档文件的压缩比要优于gzip工具。

bzip2 \ bunzip2 <-> [*.bz2]

注意:

  • 用 bzip2 压缩,必须用 bunzip2 解压。
  • 比较新的 Linux 版本才自带 bzip2 和 bunzip2 命令。