一、文件打包、壓縮與解壓
linux常見的打包工具zip,gzip,bzip2,tar。我們可以根據需要的打包格式相對應的使用。
1、zip命令(.zip文件)
語法:zip 壓縮名 文件名
-r選項:多個文件壓縮
-o選項:不提示的情況下覆蓋文件;
-d選項:指定解壓縮路徑
zipinfo:查看內容
(1)壓縮文件:zip myfile.zip myfile
將當前目錄下的所有文件和目錄全部壓縮成myfile.zip文件,-r表示遞歸壓縮子目錄下所有文件.
(2)解壓文件:unzip
unzip -d /home/sunny myfile.zip
把myfile.zip文件解壓到 /home/sunny/
(3)其他
查看壓縮文件中的文件
zipinfo myfile.zip
向壓縮文件中myfile.zip中添加rpm_info.txt文件
zip -m myfile.zip ./rpm_info.txt
2、gzip命令(.gz文件)
gzip只能針對普通文件(regular file)進行壓縮和解壓,對於文件夾、符號鏈接等不支持。如果想把多個文件一起壓縮並打包,gzip自身辦不到的。則需要用tar命令來完成。
語法:gzip 文件名
例:把文件test1.txt打包
localhost:~ # gzip test1.txt
解壓之前壓縮的文件,只需加-d選項即可
localhost:~ # gzip -d test1.txt.gz
注:這里需要注意的是,gzip壓縮會把源文件覆蓋,這里我們可以用-c選項避免
#-c選項就是讓gzip把壓縮的內容輸出到標准輸出,而非寫入到文件中。
localhost:~ # gzip -c test1.txt > test1.txt.gz
gzip與tar區別:
一個是壓縮工具、一個是打包工具。當我們需要打包多個文件時,就特別能體現出tar與gzip區別。
gzip:壓縮/解壓縮工具,當有多個文件時,gzip只能進行壓縮,但不能把多個文件壓縮成一個文件,特別的凌亂,這時tar就擔任了這個角色。
tar:打包/解包工具,在gzip基礎之上,在進行多文件打包成一個文件,管理起來比較方便。
例:對test1.txt進行打包並壓縮
localhost:~ # tar -zcvf test1.txt.tar.gz test1.txt
解壓:
localhost:~ # tar -xvf test1.txt.tar.gz
壓縮速度與解壓縮強度
gzip 命令確實為用戶提供了這樣的選擇權,包含了九個壓縮級別,分別是 1、2、3、4、5、6、7、8、9:
“1 級”表示壓縮速度最快,但強度不高。
“9 級”表示壓縮強度最高,但速度較慢。
默認情況下是 6 級。
#我們先用“最快速”的壓縮等級(1級), 同時使用time來精准計時
localhost:~ # time gzip -1 error.log
real 0m22.322s
user 0m20.983s
sys 0m1.250s
#“最快速”壓縮等級, 耗時是22.3秒, 壓縮后的大小為99MB
localhost:~ # ls -hl error.log.gz
-rw-r--r-- 1 roc roc 99M 2月 20 14:39 error.log.gz
#然后我們再嘗試“最強”壓縮等級(9級), 同樣也使用time來精准計時
localhost:~ # time gzip -9 error.log
real 1m3.544s
user 1m2.189s
sys 0m1.256s
#“最強”壓縮等級, 耗時變長了許多, 為1分3秒, 但壓縮后的文件卻是更小了, 為70MB
localhost:~ # ls -hl error.log.gz
-rw-r--r-- 1 roc roc 70M 2月 20 14:39 error.log.gz
3、bzip2命令(.bz2文件)
bzip2/bunzip2(壓縮/解壓縮)
語法:bzip2 文件名
localhost:~ # bzip2 test1.txt 壓縮
localhost:~ # bunzip2 test1.txt.bz2 解壓縮
localhost:~ # bzip2 -d test1.txt.bz2
多個文件壓縮
localhost:~ # bzip2 test1.txt test2.txt test3.txt
注:gzip2壓縮時也會覆蓋源文件,-c可以避免,與gzip語法一樣
4、tar包管理工具簡介
TAR(Tape Archive,TAR)是Linux下的包管理工具,具有5種功能:打包、查詢、釋放、更新、追加。
格式:tar [主選項+輔助選項] [文件或目錄]
選項 |
說明 |
-c |
創建新的tar包 |
-t |
列出tar包文件的列表 |
-x |
從tar包中釋放文件 |
-r |
把備份文件追加到已備份文件的末尾 |
輔助選項 |
說明 |
-f |
選擇文件或設備,必選項 |
-v |
顯示命令執行的詳細信息 |
-z |
用gzip來壓縮/解壓縮文件 |
-j |
用bzip2來壓縮/解壓縮文件 |
-C |
指定文件解壓后的存放路徑 |
對文件進行打包:tar -cf xx.tar files.txt sdb1.txt
列出tar包文件包含的文件:tar -tf xx.tar
解包到當前目錄:tar -xf xx.tar -C ./
壓縮為gzip: tar -zcf yy.gz files.txt sdb1.txt
壓縮為bzip2:tar -jcf yy.bz2 files.txt sdb1.txt
5、除了以上幾種打包工具,我們也可以自己添加
rar命令
下載rarlinux-x64-5.7.1.tar.gz:https://www.rarlab.com/download.htm
解壓后將rar文件到/usr/local目錄下:tar -xf rarlinux-x64-5.7.1.tar.gz -C usr/local/
然后執行以下命令
ln -s /usr/local/rar/rar /usr/local/bin/rar
ln -s /usr/local/rar/unrar /usr/local/bin/unrar
壓縮文件:rar a test.rar ./test/
列出壓縮文件:rar l test.rar
解壓文件:rar x test.rar ./