Linux之文件压缩与打包
? ? ? ?在講解壓縮與打包之前說一下什么是壓縮,簡單的說,就是經過壓縮軟件壓縮的文件叫壓縮文件,壓縮的原理是把文件的二進制代碼壓縮,把相鄰的0,1代碼減少,比如有000000,可以把它變成6個0 的寫法60,來減少該文件的空間,計算機中都是以byte為單位的,其實bit才是計算的最小單位,比如對于一個8位的 0000 00001正好是一個byte,但是發現前7位都是0,因此可以“記錄”1,這樣就省下了 7 bits,實現文件變小的功能。
Linux 系統常見的壓縮命令有以下幾個,這里之所以有擴名,完全是為了我們解讀文件的直觀性,看到就知道是什么格式的壓縮文件,最主要的是不同的壓縮格式解壓縮的方式不同,所以通過后綴名,可以使用正確的解壓縮方式進行解壓縮
1、gzip , zcap
gzip是應用最為廣泛的壓縮命令,gzip 可以解壓zip 和 gzip等軟件的壓縮文件
[root @localhost ~]#gzip [-cdtv#] filename [root @localhost ~]#zcap filename.gz參數解析: -c: 將壓縮的數據輸出到屏幕上,可通過數據流重定向來處理 -d:解壓縮參數 -t: 用來檢查一個壓縮文件的一致性,查看文件有無錯誤 -v: 顯示源文件和壓縮文件的壓縮比例 -#:壓縮等級,-1,壓縮速度最快,壓縮比最差,-9最慢,壓縮比最好,默認是-6注意:使用gzip進行壓縮時,默認下文件被壓縮成.gz的形式,源文件會被刪除
知道普通文件的查看可以是 cat 命令,同樣,壓縮文件可以使用 zcat 進行查看 壓縮文件的內容
現在將上述壓縮文件解壓縮
[root@localhost tmp]# gzip -d man.config.gz注意:gzip -d 解壓縮后,默認的將.gz的壓縮文件刪除,生成源文件
利用重定向保留源文件和壓縮文件
[root@localhost tmp]# gzip -c man.config > man.config.gz2、bzip2,bzcat
bzip2壓縮方式是為了取代gzip并提供最佳的壓縮比而產生的,其用法同gzip完全一樣,只是為了更好的壓縮比,同時為了查看壓縮文件的內容,使用bzcat進行查看,壓縮文件的后綴是 .bz
[root @localhost ~]#bzip2 [-cdtv#] filename [root @localhost ~]#bzcap filename.bz2參數解析: -c: 將壓縮的數據輸出到屏幕上,可通過數據流重定向來處理 -d:解壓縮參數 -t: 用來檢查一個壓縮文件的一致性,查看文件有無錯誤 -v: 顯示源文件和壓縮文件的壓縮比例 -#:壓縮等級,-1,壓縮速度最快,壓縮比最差,-9最慢,壓縮比最好,默認是-63、打包 tar
什么是打包?就是將多個文件或者目錄包成一個文件的功能。
[root @localhost ~]#tar [-j|-z] [cv] [-f新建的文件名] filename1,filenam2.... #打包與壓縮 [root @localhost ~]#tar [-j|-z] [-tv] [-f 新建的文件名] #查看文件名 [root @localhost ~]#tar [-j|-z] [xv] [-f新建的文件名] [-C 目錄] #解壓縮參數參數解析: -c: 新建打包文件,可搭配 -v來查看過程中被打包的文件名 filename1... -t: 查看打包文件的內容含有哪些文件名,重點在查看文件名 -x: 解打包或者解壓縮,搭配 -C 在特定目錄解開,特別注意:-c,-t,-x不可同時出現在一串命令行中 -j: 通過bzip2的支持進行壓縮/解壓縮,此時文件名的后綴建議為.tar.bz2 -z: 通過gzip的支持進行壓縮/解壓縮,此時文件名的后綴建議為.tar.gz -v: 在壓縮/解壓縮的過程中,將正在處理的文件名顯示處理 -f filename: -f后面跟要被處理的文件,建議 -f 單獨寫成一個參數 -C 目錄: 這個參數在解壓縮時,若要在特定目錄解壓縮,可以使用這個參數另外還有兩個參數:
-p: 保留備份數據的基本權限與屬性,常用與備份(-c)重要的配置文件
-P:保留絕對路徑,即允許備份數據中含有根目錄存在之意
注意:之所以要將 -f filename單獨寫,如果 -jcvf filename也可以,但由于參數的順序是可以變更,這樣與 -jvfc filename 僅? ? ? ? ? ? ? ?僅?是變更了參數順序,但是這樣是不行,因為 -f filename ,這樣導致生成了文件名為 c 的文件,因此建議-f單獨列出來
常見的使用tar如下幾條命令:
[root @localhost ~]#tar -jcv -f filename.tar.bz2 要被壓縮的文件和目錄 #壓縮命令 [root @localhost ~]#tar -jtv -f filename.tar.bz2 #查詢 [root @localhost ~]#tar -jxv -f filename.tar.bz2 -C 欲解壓縮的目錄 #解壓縮將/etc目錄下的文件打包并壓縮為etc.tar.gz的壓縮文件
[root @localhost ~]#tar -zpcv -f /root/etc.tar.gz /etc由于指定了 -v 參數,因此會將打包壓縮過程中的文件名顯示在屏幕上,對于 -p 參數,是為了保留源文件的權限和屬性
圖中,顯示了部分打包壓縮過程中的文件名。解壓縮
[root @localhost ~]#tar -jpcv -f /root/etc.tar.gz /etc [root @localhost ~]#tar -jxv -f /root/etc.tar.bz2 #將 tar 文件解壓縮注意:文件的備份和復制過程中,文件的權限可能會發生變更,因此在備份重要的系統數據時,源文件的權限必須進行完整的備份
查看 tar 文件的數據內容
[root @localhost ~]#tar -jtv -f /root/etc.tar.bi2這里給出整個過程:
[root @localhost ~]#tar -jpcv -f /root/etc.tar.bz2 /etc #將 /etc 目錄壓縮為etc.bta.bz2 的壓縮文件 [root @localhost ~]#tar -jtv -f /root/etc.tar.bz2 #查看 tar 文件的數據內容查看壓縮文件的內容時,使用 參數? -v? 會將文件權限/屬性顯示出來
[root @localhost ~]#tar -jxv -f /root/etc.tar.bz2 #將 tar 文件解壓縮此時會看到解壓縮后的文件? /etc? 會在本目錄下生成
通常需要指定解壓縮的位置,將解壓縮后的文件放在 /tmp 目錄下
[root @localhost ~]#tar -jxv -f /root/etc.tar.bz2 -C /tmp #指定 tar 文件解壓縮的位置為 /tmpa.那如果只是想解壓壓縮文件中的某一個文件呢?
使用? -jtv? 找到你要的文件名
[root @localhost ~]#tar -jtv -f /root/etc.tar.bz2 | grep 'shadow' #找到需要解壓的文件 [root @localhost ~]#tar -jxv -f /root/etc.tar.bz2 /etc/shadow #解壓壓縮文件中的一個文件其中方法是,先通過 -jtv 找到需要解壓的文件,然后使用 -jxv 進行解壓
[root @localhost ~]#tar -jxv -f? 打包文件.tar.bz2 待解壓的文件名
b.打包某個目錄,但是不包含該目錄下的某些文件
總結
以上是生活随笔為你收集整理的Linux之文件压缩与打包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux之账号管理
- 下一篇: Linux之脚本执行