Linux文件的归档与压缩

460 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

没有图形界面却要经常拷贝和移动大量的文件,文件散落在各个目录,也占用了很大的空间,归档与压缩的能力是必须的。这篇文章简单讲一下Linux上的压缩和归档。

压缩这件事的价值无需多言,存储的成本也是一个巨大的开销。首先从源头上开发者还是要把文件做小,但现现今的5G+8K的时代,内容想要更清晰的呈现体积就是小不了。那压缩算法就得登场了,压缩的本质就是一个删除冗余数据的过程,比如一张纯黑的图片,色值为0,这时候无论有多大的文件,都可以记录像素数加上0这个色值来存储,这是最基本的压缩算法,我们称之为游程编码,记录元素出现的数量,适合比较单调的压缩场景。

linux下的一个比较常用的压缩是gzip,用法也很简单:

gzip test.txt

这里会产生一个test.txt.gz的文件,并且替换了原来的txt文件,实测压缩后的大小约为原来的1/5,但gzip无法压缩目录。

相对应的解压缩命令是gunzip,执行后原来的压缩文件又变成了txt文件。无论是压缩还是解压缩。权限和时间戳不会变化。

刚刚提到gzip无法压缩整个目录,tar命令前来救驾。书面语上说是归档,口头上就是打包。一个 tar包可以由一组独立的文件,一个或者多个目录,或者两者混合体组成。现在就可以用gzip对整个tar包压缩了,所以我们经常会看到.tar.gz的后缀名的压缩包。