文件压缩原理:将文件中没有使用的空间腾出来(比如存储数字‘1‘,只需要一个bit位,但为了满足目前我们的操作系统数据的存取,会将数字‘1‘存储为一个字节,但其实只有最低一位有用,其他7位 都为空,这样便白白浪费了7个bit的空间),还有一种压缩技术是将重复的数据进行统计记录。(如如果文件中某一处的数据为【111...】100个1,那么压缩技术会记录为【100个1】)
常见的压缩文件扩展名:
*.Z : comepress 程序压缩的文件;
*.zip: zip程序压缩的文件;
*.gz : gzip程序压缩的文件;
*.bz2: bzip2程序压缩的文件;
*.xz : xz 程序压缩的文件;
*.tar: tar程序打包的文件,并没有压缩过。
*.tar.gz :tar打包,gzip程序压缩
*.tar.bz2:tar打包,bzip2程序压缩
*.tar.xz :tar打包,xz压缩
gzip可以说是应用度最广的压缩指令了。
gzip [-cdtv#] 文档名
-c :将压缩的数据输出到屏幕上,可透过数据流重导向来处理。
-d :解压缩的参数;
-t :可以检验一个压缩文件的一致性,看看文件有无错误。
-v :可以显示出源文件/压缩文件的压缩比等信息。
-# :#为数字的意思,代表压缩等级,-1 最快,但是压缩比差,-9 最慢,但是压缩比最好!预设是 -6。
当你使用gzip进行压缩时,在预设状态下原来的文件会被压缩成 .gz的文件,源文件就不再存在了。
zcat/zmore/zless :可以读取纯文本文档被压缩后的压缩文件。
zgrep:可以在不解压文件的情况下,搜索关键字。
若说gzip是为了取代compress并提供更好的压缩比而成立的,那么bzip2则是为了取代gzip并提供更佳的压缩比而来的。bzip的用法如下:
bzip2 [-cdkzv#] 文档名
-c :将压缩的过程产生的数据输出到屏幕上!
-d :解压缩的参数
-k :保留源文件,而不会删除原始文件
-z :压缩的参数(默认值,可以不加)
-v :可以显示出源文件/压缩文件的压缩比等信息
-# :#为数字,代表压缩等级。
其他可用指令:bzcat/bamore/bzless/bzgrep
虽然bzip2已经具有很棒的压缩比,不过某些自由软件开发者还不满足,因此后来推出了xz这个压缩比更高的软件,用法与gzip ,bzip2完全相同。
xz [-dtlkc#]文档名
-d :解压参数
-t :测试文件的完整性,看有没有错误。
-l :列出压缩文件的相关信息
-k :保留源文件
-c :将数据输出到屏幕上
-# :数字,压缩等级
tar :打包指令
-c :建立打包文件
-t :查看打包文件的内容含有那些文档名,重点在查看文档名
-x :解打包,或解压缩的功能
-z :透过gzip支持,进行压缩/解压缩:此时文档名最好是*.tar.gz
-j :透过bzip2支持,进行压缩/解压缩:此时文档名最好是*.tar.bz2
-J :透过xz支持,进行压缩/解压缩:此时文档名最好是*.tar.xz
-v :在压缩/解压缩的过程中,将正在处理的文档名显示出来。
-f filename :待处理的文档名
-C 目录 :这个选项用在解压缩,若要在特定的目录解压缩,可以使用这个选项。
-p :保留备份数据的原始权限与属性
-P :保留绝对路径,亦即允许备份数据中含有根目录存在之意。
--exclude=FILE :在压缩过程中,不要将FILE打包。
我们将仅使用tar进行打包的文件成为tarfile ,如果还进行过压缩的支持,我们称为tarball。
tar cvf - /etc | tar xvf - 一边打包,一边解压缩,有点类似cp的意思。