1. 程式人生 > >Linux文件壓縮與打包

Linux文件壓縮與打包

hello tar.gz 拓展 數據流 tar打包 div log 變慢 str

1.壓縮與打包

壓縮:利用更節省空間的記錄方式來記錄文件數據,讓文件占用的容量下降。優點:相同容量能夠存儲更多數據,傳輸時數據量降低,從而速度更快。

打包:將多個文件打包為一個大文件,實際文件占用的容量沒有下降。優點:讓文件集合有了一個統一的名稱。

2.Linux常見的壓縮文件拓展名

*.gz  gzip壓縮的文件

*.bz2  bzip2壓縮的文件

*.tar  tar程序打包的文件

*.tar.gz  tar程序打包,gzip壓縮的文件

*.tar.bz2  tar程序打包,bzip2壓縮的文件

3.gizp壓縮命令

使用最廣的壓縮命令,可以解開compress,zip,gzip壓縮過的文件

gzip [-cdtv#] [文件名]

-c  :將壓縮的數據輸出到屏幕上,通過數據流重定向來處理

-d  :解壓縮參數

-t  :用來檢驗壓縮文件的一致性,看看文件是否有錯誤

-v  :輸出文件壓縮比等信息

-#  :壓縮等級0-9,1-9壓縮比增大速度變慢,默認為6

xxx@xxx:~/test$ gzip -9 -v -c test.txt>test.gz
test.txt:     38.0%
xxx@xxx:~/test$ ls
test.gz  test.txt
xxx@xxx:~/test$ gzip -d test.gz
xxx@xxx:~/test$ ls
test  test.txt

zcat可查看gzip壓縮後的文本文件

4.bzip2壓縮命令

比gzip壓縮比更好的壓縮命令

bzip2 [-cdkzv#] 文件名

-c  :將壓縮過程中產生的數據輸出到屏幕上

-d  :解壓縮的參數

-k  :保留原文件

-z  :壓縮的參數

-v  :可以顯示出原文件/壓縮文件的壓縮比

-#  :同gzip

xxx@xxx:~/test$ bzip2 -kvz test.txt
  test.txt:  1.366:1,  5.858 bits/byte, 26.78% saved, 534 in, 391 out.
xxx@xxx:~/test$ ls
test.txt  test.txt.bz2

5.tar打包命令

多個文件打包成一個大文件,便於壓縮(若不打包,壓縮則是對每一個文件分別壓縮,打包後便時對整體壓縮)

tar [-j|z] [-cv] [-f 新建的文件名] filename   //打包與壓縮

tar [-j|z] [-tv] [-f 新建的文件名] filename  //查看文件名

tar [-j|z] [-xv] [-f 新建的文件名] [-C 目錄]  //解壓縮

參數:

-c  :新建打包文件

-t  :查看打包文件的內容中有那些文件名

-x  :解打包或解壓縮

以上3條不可出現在同一串命令中

-j  :通過bzip2的支持來壓縮/解壓縮

-z  :通過gzip的支持來壓縮/解壓縮

-v  :壓縮/解壓縮過程中顯示正在處理的文件名

-f  :後面接要處理的文件名

-C  :特定目錄解壓

-p  :保留備份數據的 原本權限與屬性

簡單記錄

gzip壓縮:tar -zcvf filename.tar.gz 要壓縮的文件目錄或名稱

gzip解壓:tar -zxvf filename.tar.gz -C 解壓的目錄

gzip查看:tar -zcvf filename.tar.gz 

bzip2壓縮:tar -jcvf filename.tar.bz2 要壓縮的文件目錄或名稱

bzip2解壓:tar -jxvf filename.tar.bz2 -C 解壓的目錄

bzip2查看:tar -jcvf filename.tar.bz2 

解開某一個文件

tar -jtvf [打包文件] |grep ‘部分文件名‘  //查看

tar -jxvf [打包文件] [待解開的文件名]

xxx@xxx:~$ tar -jcvf /home/lht/test2/test.tar.bz2 test
test/
test/world.txt
test/test111.txt
test/test333.txt
test/444.txt
test/hello.txt
test/test.txt
test/.hello.swp
test/test222.txt
xxx@xxx:~/test2$ tar -jtvf test.tar.bz2 |grep test/test‘    //查看
-rw-r--r-- xxx/xxx           0 2018-01-21 22:14 test/test111.txt
-rw-r--r-- xxx/xxx           0 2018-01-21 22:14 test/test333.txt
-rw-r--r-- xxx/xxx         534 2018-01-21 19:54 test/test.txt
-rw-r--r-- xxx/xxx           0 2018-01-21 22:14 test/test222.txt
xxx@xxx:~/test2$ tar -jxvf test.tar.bz2 test/test111.txt  //解單個文件
test/test111.txt
xxx@xxx:~/test2$ ls
test  test.tar.bz2
xxx@xxx:~/test2$ ls test
test111.txt

打包某目錄,不包含某些文件

tar -jcvf [打包文件名] --exclude=不需要的文件 [需要打包的文件]

xxx@xxx:~/test2$ tar -jcvf test2.tar.bz2 --exclude=test/test* /home/xxx/test
tar: 從成員名中刪除開頭的“//home/xxx/test/
/home/xxx/test/world.txt
/home/xxx/test/444.txt
/home/xxx/test/hello.txt
/home/xxx/test/.hello.swp    //只打包了不包含 test/test的文件

僅備份新文件

tar -jcvf [打包的文件名]  --newer-mtime=‘時間‘  [需要打包的文件]

上述命令即可只打包某時間後改變過的文件

Linux文件壓縮與打包