本文仅为学习整理资料, 图片、知识点皆来源于《鸟叔的Linux私房菜》
linux代码运行环境为 CentOS7
常见的压缩文件后缀名:
*.Z compress 程式壓縮的檔案;
*.zip zip 程式壓縮的檔案;
*.gz gzip 程式壓縮的檔案;
*.bz2 bzip2 程式壓縮的檔案;
*.xz xz 程式壓縮的檔案;
*.tar tar 程式打包的資料,並沒有壓縮過;
*.tar.gz tar 程式打包的檔案,其中並且經過 gzip 的壓縮
*.tar.bz2 tar 程式打包的檔案,其中並且經過 bzip2 的壓縮
*.tar.xz tar 程式打包的檔案,其中並且經過 xz 的壓縮
gzip是由GNU计划所开发出来的压缩指令, 该指令已经取代了compress, 后来GNU又开发出了bzip2、xz这样的压缩比更好的压缩指令.
重要的是, 这些指令所压缩的对象都是文件, 所以针对目录的压缩, 需要用到tar来进行打包.
gzip, zcat/zmore/zless/zgrep
gzip可以解开compress、zip和gzip等软件所压缩的文件, 由gzip所压缩得到的文件名为*.gz.
$ gzip [-cdtv#] 文件名
$ zcat *.gz
選項與參數:
-c :將壓縮的資料輸出到螢幕上,可透過資料流重導向來處理;
-d :解壓縮的參數;
-t :可以用來檢驗一個壓縮檔的一致性~看看檔案有無錯誤;
-v :可以顯示出原檔案/壓縮檔案的壓縮比等資訊;
-# :# 為數字的意思,代表壓縮等級,-1 最快,但是壓縮比最差、-9 最慢,但是壓縮比最好!預設是 -6
范例: 找出/etc下体积最大的文件, 将它复制到/tmp, 然后以gzip压缩
man ls 可知:
- -l: use a long listing format
- -d: list directories themselves, not their contents
- -S: sort by file size
- -r: reverse order while sorting
所输出结果的最下面一个就是体积最大的文件了:
执行压缩:
加入-v参数可以查看到压缩比
当压缩的文件是文字文档类型时, 使用zcat可以讲该文件的解压缩之后的内容输出到屏幕上.
解压缩可以使用 gunzip、gzip -d
注意: 和Windows不同的是, Linux中使用gzip压缩后, 压缩后的文件会替换掉原文件, 同样, 解压缩得到的同名文件也会取代掉原压缩文件.
范例: 使用最佳压缩比压缩services, 并保留原来的档案
参数解释:
-9 : gzip提供了1-9个压缩登记, -9为最高压缩比等级
-c: 将压缩的文件输出到屏幕上, 在这里我们通过>的重定向, 将资料流输出到了 services.gz(自命名)文件中, 即避免了原文件被取代
cat/more/less 可以使用不同的方式來讀取純文字檔,那個 zcat/zmore/zless 則可以對應於 cat/more/less 的方式來讀取純文字檔被壓縮後的壓縮檔! 由於 gzip 這個壓縮指令主要想要用來取代 compress 的,所以不但 compress 的壓縮檔案可以使用 gzip 來解開,同時 zcat 這個指令可以同時讀取 compress 與 gzip 的壓縮檔呦!
另外,如果你還想要從文字壓縮檔當中找資料的話,可以透過 zgrep 來搜尋關鍵字喔!而不需要將壓縮檔解開才以 grep 進行! 這對查詢備份中的文字檔資料相當有用!