分享

为什么 Linux 要用 tar.gz,很少用 7Z 或 ZIP?

 金刚光 2023-07-09 发布于辽宁

历史也是凡物。物质不灭,不过粉碎罢了。

tar -cf- -- foo bar xxx ... | xz -T0 --best | >/dev/null tee foobar.tar.xz


并不是 Linux 要用 tar.gz

。谁跟你这么说,说明他根本不懂 Linux 在打包方面的设计,或者也有可能是他懒得跟人讲……

并不是 Linux 要用 tar.gz ,而是,在 Linux ,【打包】和【压缩】,被分成了两码事,并分别由不同的软件去管( KISS 原则)。

你在用 rar 或者 7z

的时候,会看到固实压缩这样一个东西。你可以选择完全固实,那么,这也就相当于,所有的被你选中要压缩的文件,会被先捏成一个文件,然后再使用压缩算法

降低它的体积。

在 Windows 的很多软件里,由于没有什么原则的约束而且是「怎么方便怎么来」,对用户来说,【打包】和【压缩】就被混在一块儿了。这样一来确实方便点儿,但理解的成本其实变高了,虽然有图形界面,但选项一堆,大部分人也不敢点,这也催生了类似于 360 压缩这样的超简洁封装……

在 Linux 上, tar 就做一件事:把多个文件包括,它的各种信息在内,变成一个。这叫【打包】。 gz/zstd/xz 则是让你可以用不同的【压缩算法】,做的事也只有一个,那就是减少体积。再不会去做别的事情了。

一类软件专注于一件事情,你是用来给文件减少体积的工具,你就别操心怎么合理地把一堆目录树

捏成一个文件的事儿;你如果想要操心如何合理地把一堆文件文件夹捏成一个,你就只操心这个,半点儿减少体积的事儿也别给我寻思。这就是 KISS 。

但是,这样会产生一个体积很大的中间文件,不是很不方便?没关系,这个中间文件如果只需要读取一次,那么它就不需要被写到硬盘上,它只需要以字节流的形式存在在内存里就好了,在 Linux 上,这部分对应的就是匿名管道了,也就是通俗说的管道符。

在 Linux 上,压缩的关键并不是告诉你必须得压成 tar.gz 。你可以不用 tar ,不打包,不存储文件的日期啊软链接啊这些东西,只是对一堆文件直接使用一个压缩算法。而不论用不用 tar ,你都可以随便原则某个减少体积的【压缩算法】: gz 对应的算法是 Gzip , zstd

对应的算法是 ZSTD , xz 对应的算法是 LZMA2 (这也是 7z 默认使用的压缩算法……不过 xz 支持多线程压缩所以多核心机器上可能会快一些)。

。。。只不过,一般还是建议先用 tar 打包再压缩,这样很多乱七八糟的信息都可以被打包起来,省去了很多麻烦。甚至,为了让你用起来方便,你直接用 tar 的 -J 选项就能做到对 xz 命令的隐式的调用( -z 则是背着你(即隐式地)调用 gz 命令)——只不过这样你就不能更细致地指定压缩命令的选项了,比如用什么并发度啊之类的,所以我还是愿意用管道,并把两个命令各司其职地显式地写清楚。

而至于 zip ……那不都是快要淘汰的东西了?我用闭源的 rar 我也不用这个,因为用它在 GBK 电脑上压缩了以后再去别的字符集

的电脑上用就会很不方便。如果你真的要用 zip ,可以,确保你的所有文件文件夹的命名都只有英文字母和数字等等这些,不能有汉字或者别的语种。但,这么麻烦,还是干脆 7z 或者 rar 呗,压缩率大。

哦对了…… 7-zip 这个软件的话,其实也支持 tar 打包的。所以,你在 Windows 上,仍然可以做这样的事情:先把一堆东西打包成 xxx.tar ,然后再把这个文件压缩成 xxx.tar.7z 。。。

(顺便,不论哪个系统,命名时候的扩展名

部分其实是随便来的。只不过,为了方便我们人类之间的交流,我们最好还是都规范命名。扩展名不代表文件真实的格式:用 docker save 保存出来的文件一定是 tar 格式的,但你可以放飞自我给它任何名字,甚至给它命名一个富有欺诈性的 tar.gz 扩展名,但事实上,它依然是一个 tar 文件,而你这样命名只是徒增误会罢了。你可以用 7zip 或者一些别的软件来查看一个文件真正的格式是什么。所以…… Windows 系统其实是比较激进地想要把扩展名这块儿不让用户随便乱搞的……但,改改设置以后,用户依然可以随便搞。因为,彻底杜绝随便搞的话,确实不方便了某些欺诈性的命名,但却让用户把错误扩展名改正确的工作也不方便了。)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多