Linux文件壓縮與打包
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文件壓縮與打包