Linux归档压缩文件(tar | gzip)
Posted Xavier Jiezou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux归档压缩文件(tar | gzip)相关的知识,希望对你有一定的参考价值。
摘要
本文将介绍如何在 Linux 中打包和压缩文件,以及如何解压和解包。
引言
何谓打包文件?就是将多个文件或一个目录打包为一个大文件。Linux 中可以使用 tar 命令进行打包。tar 是一个古老的命令,其最初目的是用于将文件备份到磁带上,tar 即英文 tape archive 的缩写。tar 命令执行打包的原理很简单,就是将多个文件前后连在一起,形成一个大文件。tar 命令并不对文件进行压缩。
何谓压缩文件?就是将多个文件或一个目录压缩为一个大文件。Linux 中可以使用 gzip 命令进行压缩。gzip 压缩后的文件大小会小于压缩前所有文件大小之和。但 gzip 命令无法直接将多个文件或目录压缩为单个包,因此一般需要搭配 tar 来使用。
用法
打包
使用 tar 命令进行打包至少得跟两个选项:-c 和 -f,拼接在一起就是 -cf,-c 表示创建打包文件,-f 指定打包的文件名。其后还要跟两个参数:[打包文件名] 和 [要打包的文件/列表],示例如下:
tar -cf test.tar *.txt
:将当前工作目录下所有以 .txt 结尾的文件打包为一个名为 test.tar 的文件tar -cf test.tar test
:将当前工作目录下的 test 目录打包为一个名为 test.tar 的文件tar -tf test.tar
:列出归档内容(不解包)tar -f test.tar --delete 1.txt
:从 test.tar 归档中删除名为 1.txt 的文件tar -f test.tar -A result.tar
:合并 result.tar 到 test.tar 中tar -f test.tar -r 1.txt
:向 test.tar 中添加 1.txttar -xf test.tar -C test
:解包 test.tar 到当前目录tar -xf test.tar -C test
:解包 test.tar 到 -C 参数指定的 test 目录下
$ ls
1.txt 2.txt result
$ tar -cf test.tar *.txt
$ tar -tf test.tar
1.txt
2.txt
$ ls
1.txt 2.txt result test.tar
$ tar -f test.tar --delete 1.txt
$ tar -tf test.tar
2.txt
$ tar -cf result.tar result/
$ tar -f test.tar -A result.tar
$ tar -tf test.tar
2.txt
result/
result/3.txt
$ tar -f test.tar -r 1.txt
$ tar -tf test.tar
2.txt
result/
result/3.txt
1.txt
$ mkdir test
$ tar -xf test.tar -C test
$ ls -R test
test:
1.txt 2.txt result
test/result:
3.txt
注意,用 ls -l
命令可以发现,打包后的 .tar 文件大小比打包之前的所有文件大小之和还要大,原因是打包时会添加一些额外信息,同时也印证了 tar 命令是不会压缩文件的。
压缩
Linux 中文件压缩命令有多种,其中最常用的就是 gzip,其用法如下:
gzip test.tar
:压缩 test.tar(会自动覆盖原归档并添加 .gz 的后缀用于标识,默认压缩比为 6)gzip -d test.tar.gz
:解压 test.tar.gzgzip -9 test.tar
:使用最大压缩比 9 来压缩 test.tar (压缩速度最慢,但压缩后的文件最小)
打包+压缩↔️解压+解包
虽然 gzip 命令可以提供高效的压缩,但不提供打包功能,也就是说 gzip 只能单个地压缩文件,而不能将多个文件或整个目录压缩到一个文件中。因此,gzip 命令往往要和 tar 命令一起连用,一般先使用 tar 打包,再用 gzip 压缩。反过来,则要使用 gzip 解压,再使用 tar 解包。
为方便起见,tar 还提供了特殊选项可以调用 gzip 命令,可以让打包压缩和解压解包一气呵成。这个选项就是 -z,下面我们给出实例来进行说明:
tar -czf test.tar.gz *.txt
:将当前工作目录下所有以 .txt 结尾的文件打包并压缩为一个名为 test.tar.gz 的文件tar -xzf test.tar.gz -C test
:解压并解包 test.tar.gz 到 -C 参数指定的 test 目录下
$ ls
1.txt 2.txt result
$ tar -czf test.tar.gz *.txt
$ ls
1.txt 2.txt result test.tar.gz
$ tar -tzf test.tar.gz
1.txt
2.txt
$ mkdir test
$ tar -xzf test.tar.gz -C test
$ ls test
1.txt 2.txt
参考
以上是关于Linux归档压缩文件(tar | gzip)的主要内容,如果未能解决你的问题,请参考以下文章