2023.21 linux下的文件打包tar

发布时间 2023-05-27 19:54:08作者: 时间朋友
“tar” 是 “tape archive” 的缩写,最初是为了在磁带上创建档案而设计的,Linux下常使用 tar 命令将多个文件或目录打包成一个文件,这样可以方便地将多个文件或目录打包成一个文件,以便于备份或传输。
刚从Windows使用Linux的很多可能都没意识到打包和压缩两个不同的概念,打包就是将多个文件合并成一个文件,压缩就减少文件大小,而在Windows上这两个操作经常一起完成了。而Linux上吸取Unix设计理念,遵守KISS设计原则,一个程序只做一件事,并尽量把它做到极致,所以打包和压缩是分开的,tar主要用来打包,而gzip、bzip、xz等用来压缩,如果只是用tar -cvf 打包文件,并不会减少文件大小。
考虑到打包和压缩两个操作会经常一起用,tar 提供了参数-z或-j实现完成打包后自动调用对应的压缩命令的操作,比如,当使用tar -zcvf 时,tar完成打包后会隐式调用gzip来实现打包后文件的压缩。
在Linux中,经常看到文件类似“.tar”、“.tar.gz”、".tar.bz2"扩展名的文件,其中tar表示打包文件,tar.gz或.tgz,表示tar打包后又用gzip压缩后得到的文件,当然这里扩展名是执行命令时自己定义的,是与后面使用人的沟通交流的方式。
Linux要对文件压缩,可以使用bzip2、gzip 和 xz 命令,不过要注意bzip2、gzip 和 xz 命令都用压缩文件替换原始文件,tar 和 zip 命令不替换。使用tar可以保留 unix 风格的文件权限以及符号链接等信息,而zip压缩不行,它压缩后的文件解压后要变成可执行文件要重新 chmod chown 才行。另外zip也没保存文件名编码,所以如果用英文数字以为的名称时容易出现乱码的情况,因此在Linux中使用比较少。

tar 参数使用:

-v 显示操作过程

-f 指定压缩文件

-j 支持bzip2压缩/解压文件(bz、bz2后缀的文件)

-J 支持xz压缩/解压文件(tar.xz格式)

-z 支持gzip压缩/解压文件(gz后缀的文件)

-x 从压缩文件中提取文件(解包/解压的时候用)extract

-c 建立新的压缩文件(打包/压缩的时候用)compress

从压缩比来讲xz > bz2 > gz,压缩耗时 gz < bz2 < xz,一般在不是要尽可能将文件打包压缩到最小时多用gz,它兼顾了时间和压缩比的平衡。