文章來源: "linux下文件的打包和壓縮" "TOC" 一、文件壓縮的原理 簡單來說,壓縮技術就是在存儲時將文件裡面沒有使用的空間利用起來,主要有以下兩種情況。 1. 存儲時去掉沒有用到的空間。假設我們只是存儲一個數字 1 ,二進位表示數字1只需1個bit是1就可以表示(1=1 2^0),但是為了 ...
文章來源:linux下文件的打包和壓縮
目錄
一、文件壓縮的原理
簡單來說,壓縮技術就是在存儲時將文件裡面沒有使用的空間利用起來,主要有以下兩種情況。
-
存儲時去掉沒有用到的空間。假設我們只是存儲一個數字 1 ,二進位表示數字1只需1個bit是1就可以表示(1=1*2^0),但是為了滿足操作系統對數據的存取要求,只能通過byte的形態來記錄。1 byte = 8 bits,所以每個byte當中會有8個bits,而其他的7個bits將自動的被填上0,其實那7個bits是沒有用到的。
-
另外一種壓縮技術是將重覆的數據進行統計記錄。舉例來說,如果數據為[1111…]共有100個1,那麼記錄為“100個1”也能精簡文件的大小。
二、linux常見的壓縮指令
Linux支持的壓縮指令可以通過不同的尾碼名進行區分,常見的擴展名:
- .zip:zip程式壓縮的文件
- .gz:gzip程式壓縮的文件
- .bz2:bzip2程式壓縮的文件
- .xz:xz程式壓縮的文件
- .tar:tar程式打包的數據,並沒有壓縮過
- .tar.gz:tar程式打包的數據,經過gzip壓縮過
- .tar.bz2:tar程式打包的數據,經過bzip2壓縮過
- .tar.xz:tar程式打包的文件,經過xz壓縮過
三、常用實例
以把/etc中內容打包壓縮到/tmp/etc.*,然後在解壓回/etc為例
1、tar命令
打包:tar -cvf /tmp/etc.tar /etc
解包:tar -xvf /tmp/etc.tar /etc
常用參數 :
-
-c :建立壓縮檔案(create 的意思);
-
-x :解壓檔案!
-
-v : 顯示所有過程 ,執行過程會列印在屏幕上!
-
-f : 使用檔案名字,這個參數是最後一個參數,後面只能接檔案名。
2、zip命令
壓縮:zip -r /tmp/etc.zip /etc
解壓:unzip /tmp/etc.zip /etc
- -r: 將指定的目錄下的所有子目錄以及文件一起處理
3、gz命令
壓縮:tar -czvf /tmp/etc.tar.gz /etc
解壓:tar -xzvf /tmp/etc.tar.gz /etc
- -z:使用gzip命令對文件進行壓縮或解壓縮。
4、bz2命令
壓縮:tar -cjvf /tmp/etc.tar.bz2 /etc
解壓:tar -xjvf /tmp/etc.tar.bz2 /etc
- -j:使用bz2命令對文件進行壓縮或解壓縮。
5、xz命令(必須分兩步)
打包:tar -cvf /tmp/etc.tar /etc
壓縮:xz -z /tmp/etc.tar #將 /tmp/etc.tar壓縮成為 /tmp/etc.tar.xz
解壓縮:xz -d etc.tar.xz #將 etc.tar.xz解壓成 etc.tar
解包:tar -xvf etc.tar
-
-z:使用xz命令對文件進行壓縮操作。
-
-d:使用xz命令對文件進行解壓縮操作。
以上命令均可以將多個文件夾或文件打包壓縮到一個文件中
總結:
沒有特殊要求推薦使用bz2命令,它是速度和壓縮比都比較折中的命令,如果想要快速壓縮文件,可以使用gz命令,如果追求最高的壓縮比,可以使用xz命令 。