在使用计算机的时候,压缩文件应该是经常会用到的功能。首先:通过压缩文件可以减小文件体积,节省存储空间。其次:通过打包或压缩文件可以把多个文件整合为一个文件,方便传输,尤其是对于多个小文件。这里就来简单的写一下 Linux 的压缩和打包文件,使用的是 Linux 自带的 gzip、bzip2、xz,其他的压缩工具例如 rar 以后有时间再写,为了方便查看,这里把压缩和打包分开写。

打包文件

打包文件就是把多个文件整合为一个文件,主要是打包,没有压缩,下面是 /home 目录的两个文件,文件大小为 6字节:

root@DESKTOP-VKKQVTF:/home# ls -lh
总用量 0
-rw-rw-rw- 1 root root 6 12月 27 23:55 1.txt
-rw-rw-rw- 1 root root 6 12月 27 23:56 2.txt

打包的命令是 tar cf 新文件名 要打包文件的文件名,多个文件可用空格分隔,下面把 1.txt2.txt 打包为一个名为 12.tar 的文件:

root@DESKTOP-VKKQVTF:/home# tar cf 12.tar 1.txt 2.txt
root@DESKTOP-VKKQVTF:/home# ls
12.tar  1.txt  2.txt

查看一下大小:

root@DESKTOP-VKKQVTF:/home# ls -lh
总用量 12K
-rw-rw-rw- 1 root root 10K 12月 28 00:03 12.tar
-rw-rw-rw- 1 root root   6 12月 27 23:55 1.txt
-rw-rw-rw- 1 root root   6 12月 27 23:56 2.txt

可以看到两个 6B 的文件打包后变成了10K,下面在把 /tmp 目录下的 5 个 2.3K 的文件进行打包:

root@DESKTOP-VKKQVTF:/tmp# ls -lh
总用量 20K
-rw-rw-rw- 1 root root 2.3K 12月 28 00:11 1.txt
-rw-rw-rw- 1 root root 2.3K 12月 28 00:12 2.txt
-rw-rw-rw- 1 root root 2.3K 12月 28 00:15 3.txt
-rw-rw-rw- 1 root root 2.3K 12月 28 00:15 4.txt
-rw-rw-rw- 1 root root 2.3K 12月 28 00:15 5.txt
root@DESKTOP-VKKQVTF:/tmp# tar cf 12345.tar 1.txt 2.txt 3.txt 4.txt 5.txt
root@DESKTOP-VKKQVTF:/tmp# ls -lh
总用量 52K
-rw-rw-rw- 1 root root  20K 12月 28 00:16 12345.tar
-rw-rw-rw- 1 root root 2.3K 12月 28 00:11 1.txt
-rw-rw-rw- 1 root root 2.3K 12月 28 00:12 2.txt
-rw-rw-rw- 1 root root 2.3K 12月 28 00:15 3.txt
-rw-rw-rw- 1 root root 2.3K 12月 28 00:15 4.txt
-rw-rw-rw- 1 root root 2.3K 12月 28 00:15 5.txt

5 个 2.3K 的文件打包后变成了 20K,多出来的那几 K 应该是存储的文件信息,如果要打包目录也是可以的,要打包的文件名写目录名即可。后缀名使用 tar 是为了方便查看和辨认。

使用 tar tf 文件名 可查看打包的文件,下面是查看 /home 目录下的 12.tar

root@DESKTOP-VKKQVTF:/home# ls
12.tar  1.txt  2.txt
root@DESKTOP-VKKQVTF:/home# tar tf 12.tar
1.txt
2.txt

使用 tar xf 文件名 可提取文件,下面还是提取 /home 目录下的 12.tar 里的文件:

root@DESKTOP-VKKQVTF:/home# ls
12.tar
root@DESKTOP-VKKQVTF:/home# tar xf 12.tar
root@DESKTOP-VKKQVTF:/home# ls
12.tar  1.txt  2.txt

使用 tar vf 文件名 可查看文件信息,下面是查看 /home/12.tar 的文件信息:

root@DESKTOP-VKKQVTF:/home# tar vf 12.tar
tar: You must specify one of the '-Acdtrux', '--delete' or '--test-label' options
Try 'tar --help' or 'tar --usage' for more information.
root@DESKTOP-VKKQVTF:/home#

下面是 tar 的参数说明:

参数说明
c打包文件
t查看已打包的文件
x提取文件
v查看文件信息
f文件,用来分隔参数和文件名

使用的方法上面都有,tar 参数f 文件名,参数前面不用加 -

压缩文件

gzip

压缩文件和打包文件的命令差不多,创建压缩文件也需要用到 tar 打包文件的参数,使用 tar zcf 文件名 要压缩的文件名,下面把 /tmp 目录下的 5 个 txt 文件进行压缩:

root@DESKTOP-VKKQVTF:/tmp# ls -lh
总用量 40K
-rw-rw-rw- 1 root root  20K 12月 28 00:16 12345.tar
-rw-rw-rw- 1 root root 2.3K 12月 28 00:11 1.txt
-rw-rw-rw- 1 root root 2.3K 12月 28 00:12 2.txt
-rw-rw-rw- 1 root root 2.3K 12月 28 00:15 3.txt
-rw-rw-rw- 1 root root 2.3K 12月 28 00:15 4.txt
-rw-rw-rw- 1 root root 2.3K 12月 28 00:15 5.txt
root@DESKTOP-VKKQVTF:/tmp# tar zcf 12345.tar.gz 1.txt 2.txt 3.txt 4.txt 5.txt
root@DESKTOP-VKKQVTF:/tmp# ls -lh
总用量 44K
-rw-rw-rw- 1 root root  20K 12月 28 00:16 12345.tar
-rw-rw-rw- 1 root root  690 12月 28 16:55 12345.tar.gz
-rw-rw-rw- 1 root root 2.3K 12月 28 00:11 1.txt
-rw-rw-rw- 1 root root 2.3K 12月 28 00:12 2.txt
-rw-rw-rw- 1 root root 2.3K 12月 28 00:15 3.txt
-rw-rw-rw- 1 root root 2.3K 12月 28 00:15 4.txt
-rw-rw-rw- 1 root root 2.3K 12月 28 00:15 5.txt
root@DESKTOP-VKKQVTF:/tmp#

5 个 2.3K 的文件压缩后变为 690字节,相比起打包文件来说,效果还是比较明显的,这里的后缀名还是为了方便查看和辨认,关于查看和解压文件:方法和上面的查看文件和提取文件是一样的,tar 参数f 文件名

bzip2

压缩文件 tar jcf 文件名 要压缩的文件名 ,下面还是把/tmp目录下的5个txt文件进行压缩:

root@DESKTOP-VKKQVTF:/tmp# tar jcf 12345.tar.bz2 1.txt 2.txt 3.txt 4.txt 5.txt
root@DESKTOP-VKKQVTF:/tmp# ls -lh
总用量 48K
-rw-rw-rw- 1 root root  20K 12月 28 00:16 12345.tar
-rw-rw-rw- 1 root root  834 12月 28 17:06 12345.tar.bz2
-rw-rw-rw- 1 root root  690 12月 28 16:55 12345.tar.gz
-rw-rw-rw- 1 root root 2.3K 12月 28 00:11 1.txt
-rw-rw-rw- 1 root root 2.3K 12月 28 00:12 2.txt
-rw-rw-rw- 1 root root 2.3K 12月 28 00:15 3.txt
-rw-rw-rw- 1 root root 2.3K 12月 28 00:15 4.txt
-rw-rw-rw- 1 root root 2.3K 12月 28 00:15 5.txt

5个2.3K的文件压缩后变为834字节。

xz

压缩文件 tar Jcf 文件名 要压缩的文件名 ,这里的 J 使用大写,下面还是压缩 /tmp 目录下的 5 个 txt 文件:

root@DESKTOP-VKKQVTF:/tmp# tar Jcf 12345.tar.xz 1.txt 2.txt 3.txt 4.txt 5.txt
root@DESKTOP-VKKQVTF:/tmp# ls -lh
总用量 52K
-rw-rw-rw- 1 root root  20K 12月 28 00:16 12345.tar
-rw-rw-rw- 1 root root  834 12月 28 17:06 12345.tar.bz2
-rw-rw-rw- 1 root root  690 12月 28 16:55 12345.tar.gz
-rw-rw-rw- 1 root root  616 12月 28 17:11 12345.tar.xz
-rw-rw-rw- 1 root root 2.3K 12月 28 00:11 1.txt
-rw-rw-rw- 1 root root 2.3K 12月 28 00:12 2.txt
-rw-rw-rw- 1 root root 2.3K 12月 28 00:15 3.txt
-rw-rw-rw- 1 root root 2.3K 12月 28 00:15 4.txt
-rw-rw-rw- 1 root root 2.3K 12月 28 00:15 5.txt

5 个 2.3K 的文件压缩后变为 616字节,看来效果还是可以的。

下面是 3 种压缩文件的参数:

压缩工具参数后缀名
gzipzgz
bzip2jbz2
xzJxz

后缀名只是为了方便查看,这里的压缩是和tar打包一起使用的,解压和查看文件可以参考上面的打包相关的命令,关于 rar 和 7z 相关的工具以后有时间再写。

相关文章: