compact/extract 压缩/解压
Contents
compact/extract 压缩/解压
.tar.gz 和 .tgz
.tgz 和 .tar.gz 是同一个东西, .tgz 可以认为是 .tar.gz 是简写, 在远古时代比如 DOS 系统, 文件扩展名只能是三个字符, 所以有了 .tgz, 后来限制解除之后就能支持 .tar.gz 这种后缀了, 后者能更清晰地表达打包格式和压缩方式.
https://stackoverflow.com/questions/11534918/are-tar-gz-and-tgz-the-same-thing
这种格式是我使用得最多的压缩格式。它在压缩时不会占用太多 CPU 的,而且可以得到一个非常理想的压缩率
默认 tar 打包和系统默认的压缩工具是单线程的,pigz
是 gzip 的多线程实现, 默认用当前逻辑 cpu 个数来并发压缩,无法检测个数的话,则并发8个线程
压缩
|
|
压缩到指定目录
|
|
tar.gz 解压
|
|
解压到指定目录
|
|
|
|
|
|
解压多个文件
|
|
.rar
|
|
解压并指定输出目录
|
|
.7z
|
|
.zip
|
|
zip 压缩
|
|
zip 分卷压缩
|
|
zip 解压
|
|
zip 解压并指定目录
|
|
Zstandard, zstd, .zst
解压
|
|
zstd 不能压缩目录, -r 参数会把目录里的文件压缩成单独的文件
.tar.zst
tar 从 1.30.90 之后开始支持 zstd
有些发行版默认没有安装 zstd 需要安装一下, 比如 dnf install zstd
|
|
.zst
|
|
.tar
tar 命令可以把多个文件打包成一个文件, 还可以向 tar 包里添加文件或提取某一个文件. tar 最初被用来在磁带上创建归档文件.
Tar 是在 Linux 中使用得非常广泛的文档打包格式。它的好处就是它只消耗非常少的 CPU 以及时间去打包文件,tar 仅仅只是一个打包工具,没有压缩的功能。
|
|
|
|
BSD tar VS GNU tar
Mac 打包的 tar.gz 在 archlinux 解压时报错
tar: Ignoring unknown extended header keyword ‘LIBARCHIVE.xattr.com.apple.provenance’
Mac is built based on BSD by default. So, we can use a bunch of command on Linux without installing. But, if you use Mac with CentOS in parallel, you will get trouble which caused by the difference between Mac and CentOS environments.
|
|
https://medium.com/@fullsour/installing-gnu-tar-on-mac-827a494b1c1
向已有的 tar 包里增加文件
这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
|
|
tar 参数
|
|
.gz
|
|
.tar.bz2
这种压缩格式是我们提到的所有方式中压缩率最好的。当然,这也就意味着,它比前面的方式要占用更多的CPU与时间。
bzip2 -d foo.tar.bz2
.xz
解压: xz -d foo.xz
|
|
t 列出档案文件的内容,查看已经备份了哪些文件。
k 保存已经存在的文件。例如我们把某个文件还原,在还原的过程中,遇到相同的文件,不会进行覆盖。
m 在还原文件时,把所有文件的修改时间设定为现在。
M 创建多卷的档案文件,以便在几个磁盘中存放。
w 每一步都要求确认。
Linux下的压缩文件剖析
对于刚刚接触Linux的人来说,一定会给Linux下一大堆各式各样的文件名 给搞晕。别个不说,单单就压缩文件为例,我们知道在Windows下最常见的压缩文件就只有两种,一是,zip,另一个是.rar。可是Linux就不同 了,它有.gz、.tar.gz、tgz、bz2、.Z、.tar等众多的压缩文件名,此外windows下的.zip和.rar也可以在Linux下使 用,不过在Linux使用.zip和.rar的人就太少了。本文就来对这些常见的压缩文件进行一番小结,希望你下次遇到这些文件时不至于被搞晕:)
在具体总结各类压缩文件之前,首先要 弄清两个概念: 打包和压缩。打包是指将一大堆文件或目录什么的变成一个总的文件,压缩则是将一个大的文件通过一些压缩算法变成一个小文件。为什么要区分这 两个概念呢?其实这源于Linux中的很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你就得先借助另外的工具将这一大堆文件先打 成一个包,然后再就原来的压缩程序进行压缩。
Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进行压缩了,所以首先就来讲讲tar命令的基本用法:
tar命令的选项有很多(用man tar可以查看到),但常用的就那么几个选项,下面来举例说明一下:
tar -uf all.tar logo.gif
这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
tar -tf all.tar
这条命令是列出all.tar包中所有文件,-t是列出文件的意思
tar -xf all.tar
这条命令是解出all.tar包中所有文件,-x是解包的意思
以上就是tar的最基本的用法。为了方便用户在打包解包的同时可以压缩或解压文件,tar提供了一种特殊的功能。这就是tar可以在打包或解包的同时调用其它的压缩程序,比如调用gzip、bzip2等。
tar调用bzip2
bzip2是一个压缩能力更强的压缩程序,.bz2结尾的文件就是bzip2压缩的结果。与bzip2相对的解压程序是bunzip2。tar中使用-j这个参数来调用bzip2。下面来举例说明一下:
tar -cjf all.tar.bz2 *.jpg
这条命令是将所有.jpg的文件打成一个tar包,并且调用bzip2压缩,生成一个bzip2压缩过的包,包名为all.tar.bz2
tar -xjf all.tar.bz2
这条命令是将上面产生的包解开。
3)tar调用compress
compress也是一个压缩程序,但是好象使用compress的人不如gzip和bzip2的人多。.Z结尾的文件就是bzip2压缩的结果。与compress相对的解压程序是uncompress。tar中使用-Z这个参数来调用gzip。下面来举例说明一下:
tar -cZf all.tar.Z *.jpg
这条命令是将所有.jpg的文件打成一个tar包,并且调用compress压缩,生成一个uncompress压缩过的包,包名为all.tar.Z
tar -xZf all.tar.Z
这条命令是将上面产生的包解开
有了上面的知识,你应该可以解开多种压缩文件了,下面对于tar系列的压缩文件作一个小结:
1)对于.tar结尾的文件
tar -xf all.tar
2)对于.gz结尾的文件
gzip -d all.gz
gunzip all.gz
4)对于.bz2结尾的文件
bzip2 -d all.bz2
bunzip2 all.bz2
5)对于tar.bz2结尾的文件
tar -xjf all.tar.bz2
6)对于.Z结尾的文件
uncompress all.Z
7)对于.tar.Z结尾的文件
tar -xZf all.tar.z
另外对于Window下的常见压缩文件.zip和.rar,Linux也有相应的方法来解压它们:
2)对于.rar
要在linux下处理.rar文件,需要安装RAR for Linux,可以从网上下载,但要记住,RAR for Linux
不是免费的;然后安装:
tar -xzpvf rarlinux-3.2.0.tar.gz
cd rar
make
这样就安装好了,安装后就有了rar和unrar这两个程序,rar是压缩程序,unrar是解压程序。它们的参数选项很多,这里只做简单介绍,依旧举例说明一下其用法:
rar a all *.jpg
这条命令是将所有.jpg的文件压缩成一个rar包,名为all.rar,该程序会将.rar 扩展名将自动附加到包名后。
unrar e all.rar
这条命令是将all.rar中的所有文件解压出来
到此为至,我们已经介绍过linux下的tar、gzip、gunzip、bzip2、bunzip2、compress、uncompress、 zip、unzip、rar、unrar等程式,你应该已经能够使用它们对.tar、.gz、.tar.gz、.tgz、.bz2、.tar.bz2、. Z、.tar.Z、.zip、.rar这10种压缩文件进行解压了,以后应该不需要为下载了一个软件而不知道如何在Linux下解开而烦恼了。而且以上方 法对于Unix也基本有效。
本文介绍了linux下的压缩程式tar、gzip、gunzip、bzip2、bunzip2、 compress、uncompress、zip、unzip、rar、unrar等程式,以及如何使用它们对.tar、.gz、.tar.gz、. tgz、.bz2、.tar.bz2、.Z、.tar.Z、.zip、.rar这10种压缩文件进行操作。
.bz2
解压1: bzip2 -d FileName.bz2
解压2: bunzip2 FileName.bz2
压缩: bzip2 -z FileName
.tar.bz2
解压: tar jxvf FileName.tar.bz2
压缩: tar jcvf FileName.tar.bz2 DirName
———————————————
.bz
解压1: bzip2 -d FileName.bz
解压2: bunzip2 FileName.bz
压缩: 未知
.tar.bz
解压: tar jxvf FileName.tar.bz
压缩: 未知
———————————————
.Z
解压: uncompress FileName.Z
压缩: compress FileName
.tar.Z
解压: tar Zxvf FileName.tar.Z
压缩: tar Zcvf FileName.tar.Z DirName
.lha
解压: lha -e FileName.lha
压缩: lha -a FileName.lha FileName
lha请到: http://www.infor.kanazawa-it.ac.jp/…/lhaunix/下载!
解压后请将lha拷贝到/usr/bin目录 (其他由$PATH环境变量指定的目录也可以) :
cp lha /usr/bin/
.rpm
解包: rpm2cpio FileName.rpm | cpio -div
.lzx .lzs .arc .sda .sfx .lnx .zoo .cab .kar .cpt .pit .sit .sea
解压: sEx x FileName.*
压缩: sEx a FileName.* FileName
sEx只是调用相关程序,本身并无压缩、解压功能,请注意!
sEx请到: http://sourceforge.net/projects/sex下载!
解压后请将sEx拷贝到/usr/bin目录 (其他由$PATH环境变量指定的目录也可以) :
[root@www2 tmp]# cp sEx /usr/bin/
压缩算法, deflate、gzip、bzip2、lzo、snappy
常用的压缩算法主要有: deflate、gzip、bzip2、lzo、snappy等。差别如下所示:
deflate、gzip都是基于LZ77算法与哈夫曼编码的无损数据压缩算法,gzip只是在deflate格式上增加了文件头和文件尾;
bzip2是Julian
Seward开发并按照自由软件/开源软件协议发布的数据压缩算法,Apache的Commons-compress库中进行了实现;
LZO致力于解压速度,并且该算法也是无损算法;
LZ4是一种无损数据压缩算法,着重于压缩和解压缩速度;
Snappy是Google基于LZ77的思路用C++语言编写的快速数据压缩与解压程序库,2011年开源。它的目标并非最大程度地压缩,而是针对最快速度和合理的压缩率。
https://blog.csdn.net/wuhenyan/article/details/53117642
https://www.howtoing.com/zstd-fast-data-compression-algorithm-used-by-facebook
https://blog.csdn.net/lj402159806/article/details/76618174
http://blog.csdn.net/silvervi/article/details/6325698
http://blog.csdn.net/xiaotuni/article/details/2099609
http://xxw8393.blog.163.com/blog/static/37256834201172910058899/
Author -
LastMod 2022-09-16