Tar/Gzip: Linux 常用的打包与压缩命令

当我们建站或者和 Linux 系统传输文件时,使用文件夹或者原文件直接传输,不仅浪费带宽,通常也需要花费更多的时间,对源文件进行打包和压缩,再传输,往往是一个优雅的决定。Tar 和 gzip 是 Linux 系统下创建打包文件和压缩文件的标准命令,而且系统自带的,纯天然。根本上来说,它的功能就是把大量的文件打包成一个文件,并将这个文件进行压缩以节省空间,tar 和 gzip 能够通过结合一些简单的操作提供强大的功能。

本文将对 tar 和 gzip 的使用做个简介,同时会附上一些实例,以帮助理解。

tar-gzip

tar 命令

tar命令的复杂主要是因为它繁多的参数与设置。你可以用它来创建和操作打包文件,例如给定一个打包文件~/backup-archive.tar,以下命令将解压该文件到当前目录:

tar -xf ~/backup-archive.tar

其中-x是解压抽取(来自英文单词extract,这样是不是容易理解一些),-f是指定文件路径和文件名。

如果要将~/backup目录下所有的文件打包成一个文件,可以使用如下命令:

tar -c ~/backup > backup-archive.tar

默认情况下,tar是将打包文件的内容发送到标准输出,通过“>”重写向输出到指定文件,-c表示打包(来自英文单词archive)你可以增加-f参数以达到上述效果,如下:

tar -cf backup_archive.tar ~/backup

-f 参数是指定打包后的文件名。你也可以增加-v参数来显示命令的详细程度,如下:

tar -cvf backup_archive.tar ~/backup

这将会把被打包的文件清单显示在屏幕上。注意:参数的顺序有时也是很重要的,-f参数必须放在最后,所以-cvf 可以成功,而-cfv 执行会失败。

gzip 命令

gzip和gunzip命令提供了对文件的压缩和解压功能,然后gzip仅能作用在单个文件上。如下命令将会使full-text.txt文件压缩成full-text.txt.gz文件:

gzip full-text.txt 

你可以使用如下任一一个命令来解压该文件:

gunzip full-text.txt.gz
gzip -d full-text.txt.gz

你可以增加-v 参数来显示压缩率

gzip -v full-text.txt 

gzip接受标准的输入,因此可以压缩流文件,如下命令所示:

cat full-text.txt | gzip > full-text.txt.gz

gzip使用的压缩算法可以配置文件的压缩率,以在压缩时间和空间节省之间找到一个平衡点。这个压缩率通过-1至-9之间的一个值来控制,默认的值是-6。Gzip的–fast 参数相当于-1,–best 参数相当于-9。可以尝试以下命令并观察其输出

gzip --best -v full-text.txt 
gzip --fast -v full-text.txt 
gzip -3 -v full-text.txt 
gzip -8 -v full-text.txt

创建打包文件

如上所述,将~/backup目录下所有的文件打包的命令如下:

tar -c ~/backup > backup-archive.tar

如果不想使用标准输出的重定向来创建文件,则使用如下命令:

tar -cf backup_archive.tar ~/backup

再次强调命令的参数顺序,-f 必须在打包文件名之前,最后一个参数值是被打包的文件或是目录。

压缩打包文件

使用 gzip 压缩

tar已经可以和公共压缩库或者工具例如gzip结合,对打包文件进行有效的压缩,命令如下:

tar -czf ~/backup-archive.tar.gz ~/backup/

-z就表示使用gzip进行压缩。

使用 Bzip2 和 Xzip 压缩

tar也可以使用其他提供更好压缩率的压缩工具例如bzip,命令如下:

tar -cjf ~/backup-archive.tar.bz2 ~/backup/

或者xzip工具,命令如下:

tar -cJf ~/backup-archive.tar.xz ~/backup/

根据文件扩展名自动选取压缩工具

为了减少tar参数与相应打包文件扩展名之间对应关系的记忆,可以使用-a参数,如下命令则会自动选择gzip工具压缩:

tar -czf ~/backup-archive.tar.gz ~/backup/
tar -caf ~/backup-archive.tar.gz ~/backup/
tar -caf ~/backup-archive.tgz ~/backup/

类似的,如下命令就会选择bzip工具压缩:

tar -cjf ~/backup-archive.tar.bz2 ~/backup/
tar -caf ~/backup-archive.tar.bz2 ~/backup/
tar -caf ~/backup-archive.tb2 ~/backup/
tar -caf ~/backup-archive.tbz ~/backup/

原理都是基于打包文件的扩展名.tar.xz 和.txz

查看打包文件的内容

如果你想了解打包文件内的文件清单,可以使用tar的如下命令:

tar -tf ~/backup-archive.tar

上述命令能使用在压缩或者未压缩的打包文件。

解压打包文件

要解压使用tar命令打包的文件,命令如下:

tar -xf ~/backup-archive.tar

上述命令只能作用于未压缩的文件,并将文件解压到当前目录,要对压缩文件进行解压可以使用如下命令:

tar -xzvf ~/backup-archive.tar.gz

其中-x 参数表示解压文件,-z 参数表示使用gzip工具解压文件,-v 参数显示解压后的文件清单,-f 指定了要解压的文件名。

如果要使用bzip2工具解压,可以使用如下命令:

tar -xcvi ~/backup-archive.tar.bz2

另外tar提供-k参数,该参数表示以防解压后的文件替换已有文件中的同名文件。

压缩日志文件

一般日志文件都比较大,或者它们能在短时间内增长成大文件,所幸的是它们都是文本文件,压缩效率很高。一般情况下日志文件是独立且唯一的,那就不需要用tar命令打包,直接使用gzip命令进行压缩即可,如下:

gzip /var/log/mail.log 

该命令会产生mail.log.gz文件替换原文件/var/log/mail.log,通过如下命令解压日志文件查看内容:

gunzip /var/log/mail.log.gz

一般情况下,不需要完全解压后才能访问日志内容,gzip工具包含了传统的系统命令来查看压缩文件的内容,例如zcat相当于cat,zgrep相当于grep,zless相当于less。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Scroll to Top
Scroll to Top