㈠ 想在linux上用C實現gzip壓縮與解壓縮,有沒有相關庫函數可以調用
命令: gzip語法:gzip [選項] 壓縮(解壓縮)的文件名
-c 將輸出寫到標准輸出上,並保留原有文件。
-d 將壓縮文件解壓。
-l 對每個壓縮文件,顯示下列欄位:
(1)壓縮文件的大小
(2)未壓縮文件的大小
(3)壓縮比
未壓縮文件的名字
-r 遞歸式地查找指定目錄並壓縮其中的所有文件或者是解壓縮。
-t 測試,檢查壓縮文件是否完整。
-v 對每一個壓縮和解壓的文件,顯示文件名和壓縮比。
-num 用指定的數字num調整壓縮的速度,-1或--fast表示最快壓縮方法(低壓縮比),-9或--best表示最慢壓縮方法(高壓縮比)。系統預設值為6。
註:gzip不能壓縮整個目錄。可以使用tar先打包,再壓縮
例如:
$ tar cf test.tar test/
$ gzip test.tar
或
$ tar czf test.tar.gz test/
㈡ Linux解壓.gz的命令
解壓縮命令:
命令格式:tar -zxvf 壓縮文件名.tar.gz。解壓縮後的文件只能放在當前的目錄。
解壓全部命令參考:
tar –xvf file.tar 解壓 tar包
tar -xzvf file.tar.gz 解壓tar.gz
tar -xjvf file.tar.bz2 解壓 tar.bz2
tar –xZvf file.tar.Z 解壓tar.Z
unrar e file.rar 解壓rar
unzip file.zip 解壓zip
㈢ linux文將於目錄的壓縮和解壓縮命令:gzip壓縮文件
許可權不夠,做這個操作必須是-user student 用戶或超級用戶root,其他用戶都會報錯。
㈣ linux把文件壓縮成.tar.gz的命令
1、連接上相應的linux主機,進入到等待輸入shell指令的linux命令行狀態下。
㈤ 在Linux下如何用tar命令調用gzip進行高壓縮率的打包將指定目錄下的所有文件及文件夾打包到指定目錄下
GZIP="-9" tar zcvf /home/homee.tgz /media
㈥ 文件壓縮
將多個文件或目錄合並成為一個特殊的文件
減小文件的體積
加快資源的傳輸
節省網路的帶寬
windows: rar zip 其實支持很多類型的壓縮
linux: zip tar.gz ....
windows與linux互通 建議使用: zip
格式 壓縮工具
.zip zip壓縮工具
.gz gzip壓縮工具,只能壓縮文件,會刪除納困原文件(通常配合tar使用)
.bz2 bzip2壓縮工具,只能壓縮文件,會刪除原文件(通常配合tar使用)
.tar.gz 先使用tar命令歸檔打包,然後使用gzip壓縮
.tar.bz2 先使用tar命令歸檔打包,然後使用bzip壓縮
Linux gzip工具使用
1.gzip打包與壓縮 ,僅對文件有效.
gzip filename 打包
gzip -d filename.gz 解包
zcat filename.gz 查看包內文件的內容
linux本身沒有gzip命令,需yum install gzip -y進行安裝
gzip file #對文件進行壓縮
zcat file.gz #查看gz壓縮後的文件
gzip -d file.gz #解壓gzip的壓縮包
gzip CentOS-Vault.repo --> CentOS-Vault.repo.gz
zcat CentOS-Vault.repo.gz --> 查看不想解壓的壓磨悄縮包
默認情況下沒有zip和unzip工具,需要進行安裝 yum install zip unzip -y
1.壓縮洞游念文件為zip包
zip filename.zip filename
unzip -l filename.zip #查看壓縮包內容
2.壓縮目錄為zip包
zip -r dir.zip dir/
3.查看zip壓縮包文件是否完整
zip -T filename.zip
test of filename.zip OK
4.不解壓壓縮查看壓縮包中的內容
unzip -l filename.zip
unzip -t filename.zip #檢測文件是 否都ok
5.解壓zip文件包, 默認解壓至當前目錄
unzip filename.zip
6.解壓zip內容至/opt目錄
unzip filename.zip -d /opt/
tar是linux下最常用的壓縮與解壓縮, 支持文件和目錄的壓縮歸檔
c #創建新的歸檔文件
x #對歸檔文件解包
t #列出歸檔文件里的文件列表
f #指定包文件名,多參數f寫最後
z #使用gzip壓縮歸檔後的文件(.tar.gz)
j #使用bzip2壓縮歸檔後的文件(.tar.bz2)
J #使用xz壓縮歸檔後的文件(tar.xz)
C #指定解壓目錄位置
X #排除多個文件(寫入需要排除的文件名稱)
h #打包軟鏈接
--exclude #在打包的時候寫入需要排除文件或目錄
cjf #打包tar.bz格式 *
cJf #打包tar.xz格式 使用田少,不考慮
zxf #解壓tar.gz格式 *
jxf #解壓tar.bz格式 *
常用
czf #打包tar.gz格式 ( )
tf #查看壓縮包內容
xf #自動選擇解壓模式 ( )
將文件或目錄進行打包壓縮
tar czf test.tar.gz test/ test2/ #以gzip方式壓縮
tar cjf test.tar.bz2 dir.txt dir/ #以bz2方式壓縮
tar tf test.tar.gz
tar tf test.tar.bz2
tar tf test.tar.xz
tar xf test.tar.gz
tar xf test.tar.bz2
tar xf test.tar.xz
tar xf root.tar.gz -C /tmp/ #解壓至指定目錄
find tmp/ -type f | xargs tar czf tmp.tar.gz
tar czf tmp.tar.gz $(find /tmp/ -type f)
tar czf etc.tar.gz /etc/ --exclude=etc/services
tar czf etc.tar.gz /etc/ --exclude=etc/passwd -exclude=etc/shadow
cat pc.txt
etc/gshadow
etc/gshadow-
etc/passwd
etc/passwd
etc/shadow
etc/shadow
etc/security/opasswd
etc/pam.d/passwd
tar czXf pc.txt etc.tar.gz /etc/
yum install mariadb-server
systemctl start mariadb
mkdir /backup
tar cJf /backup/mysql.tar.xz /var/lib/mysql
tar xf /backup/mysql.tar.xz -C /
cd /var/lib/mysql
tar cJf /backup/mysql.tar.xz *
tar tf /backup/mysql.tar.xz
tar xf /backup/mysql.tar.xz C /var/lib/mysql
㈦ 說說 Linux 中的壓縮與解壓縮指令(tar)
tar 的功能類似於 Windows 中的 WinRAR。它可以將多個目錄或文件打包成一個大文件,在打包的過程中還可以透過 gzip/bzip2/xz 的支持,對文件進行壓縮 1 。
tar 的選項參數很多,主要用到的有以下這些:
還是太多,記不住怎麼辦? 記住下面這些最常用的命令即可:
總結一下:z 為gzip;j 為bzip2;J 為xz。c 為壓縮;t 為查詢;x 為解壓縮。最後跟著 vf。f 一定要是最後一個,如果放在其他選項之前,tar 就會把文件名搞錯。比如 tar -zcfv xxx 命令,tar 指令就會認為壓縮文件名為 v!
壓縮的文件名稱要根據壓縮演算法加上響應的後綴:
只有知道了壓縮演算法,我們才能解的出來,你說是嗎?所以文件名規范很重要。
假設我們需要備份 /etc 文件夾,把它打成一個壓縮包 1 。這在實際應用中很常見,因為 /etc 文件夾存放了系統主要配置文件。在英文中完整單詞是etc.,也就是後面會帶上一個句點,表示「等等」之意。
接下來,我們分別使用 gzip、bzip2與 xz 演算法對 /etc 文件夾進行打包壓縮。
gzip 壓縮指令: time tar -zpcvf /root/etc.tar.gz /etc
bzip2壓縮指令: time tar -jpcvf /root/etc.tar.bz2 /etc
xz 壓縮指令: time tar -Jpcvf /root/etc.tar.xz /etc
從 real 中可以看出: gzip 的壓縮速度最快,而 xz 的壓縮速度最慢。
從大小上來看,xz 的壓縮率最高,而gzip 壓縮率最差。
壓縮率高,自然需要時間成本。因此需要壓縮的文件夾很大,那麼就要多多考慮時間成本咯。因為 gzip 壓縮速度快,這也是 *.tar.gz 比較流行的原因之一。
假設有這樣一種場景:我們需要打包某個文件夾(/root),但這個文件夾中的某個文件或者子文件夾不想打包進去(帶 etc 前綴)。也就是希望這個文件夾部分打包,部分不打包。可以執行以下指令:
tar -zcvf /root/test.tar.gz --exclude=/root/etc* --exclude=/root/test.tar.gz /root
加了 --exclude=/root/test.tar.gz 是為了排除自身,否則壓縮包中會包含一個大小為 0 的自身文件,這恐怕不是我們希望看到的:
通過 tar -ztvf test.tar.gz 就可以查看剛剛新打的壓縮包中所包含的文件列表:
使用命令 tar -ztvf etc.tar.gz 查看剛剛打好的壓縮包。注意要使用匹配的解壓縮演算法才能正確解壓,比如示例中是 gz 作為後綴,所以加了 -z 選項表示使用 gzip 演算法進行解壓。
部分輸出內容:
可以看到該命令把文件的許可權、賬戶以及歸屬組也一並列印出來了。
而且還有一點很關鍵,這些文件都沒有根目錄。如果沒有拿掉根目錄,解壓縮後的文件名就會是絕對路徑, 亦即解壓縮後的數據一定會被放置 到 /etc/xxx 去 1 !這樣系統的 /etc 文件夾就會被覆蓋,後果很嚴重。所以,tar 打包指令默認都會去除放入包中文件的根目錄。除非通過 -P 顯示要求保留這些文件的根目錄。
(1)完全解壓
利用 tar -zxvf etc.tar.gz -C /tmp 命令把 etc.tar.gz 解壓到 /tmp。解壓成功後,就會在 /tmp 下看到 /etc 文件夾。
如果需要在本地路徑下直接解開,那直接執行 tar -zxvf etc.tar.gz 即可。
(2)部分解壓
假設我們需要把壓縮包(etc.tar.gz)中的 vconsole.conf 解壓出來。可以先執行以下命令,查詢出該文件所對應的相對路徑:
tar -ztvf etc.tar.gz | grep 『console』
拿到需要解壓的文件路徑之後,就可以執行 tar -zxvf etc.tar.gz etc/vconsole.conf
進入當前目錄的 etc 文件夾,就可以看到 vconsole.conf 已經被解壓出來了:
【1】 鳥哥. 鳥哥的Linux私房菜 基礎學習篇[M]. 第四版. 北京: 人民郵電出版社,2018:359-362.
㈧ linux怎樣解壓.gz文件
當在備份重要文件和通過網路發送大文件的時候,對文件進行壓縮非常有用。請注意,壓縮一個已經壓縮過的文件會增加額外開銷,因此你將會得到一個更大一些的文件。所以,請不要壓縮已經壓縮過的文件。在 GNU/Linux 中,有許多程序可以用來壓縮和解壓縮文件。在這篇教程中,我們僅學習其中兩個應用程序。
在類 Unix 系統中,最常見的用來壓縮文件的程序是:
gzip
bzip2
1. 使用 gzip 程序來壓縮和解壓縮文件
gzip是一個使用 Lempel-Ziv 編碼(LZ77)演算法來壓縮和解壓縮文件的實用工具。
1.1 壓縮文件
如果要壓縮一個名為ostechnix.txt的文件,使之成為 gzip 格式的壓縮文件,那麼只需運行如下命令:
上面的命令運行結束之後,將會出現一個名為ostechnix.txt.gz的 gzip 格式壓縮文件,代替了原始的ostechnix.txt文件。
gzip命令還可以有其他用法。一個有趣的例子是,我們可以將一個特定命令的輸出通過管道傳遞,然後作為gzip程序的輸入來創建一個壓縮文件。看下面的命令:
上面的命令將會創建一個 gzip 格式的壓縮文件,文件的內容為Downloads目錄的目錄項。
1.2 壓縮文件並將輸出寫到新文件中(不覆蓋原始文件)
默認情況下,gzip程序會壓縮給定文件,並以壓縮文件替代原始文件。但是,你也可以保留原始文件,並將輸出寫到標准輸出。比如,下面這個命令將會壓縮ostechnix.txt文件,並將輸出寫入文件output.txt.gz。
類似地,要解壓縮一個gzip格式的壓縮文件並指定輸出文件的文件名,只需運行:
上面的命令將會解壓縮output.txt.gz文件,並將輸出寫入到文件ostechnix1.txt中。在上面兩個例子中,原始文件均不會被刪除。
1.3 解壓縮文件
如果要解壓縮ostechnix.txt.gz文件,並以原始未壓縮版本的文件來代替它,那麼只需運行:
我們也可以使用gunzip程序來解壓縮文件:
1.4 在不解壓縮的情況下查看壓縮文件的內容
如果你想在不解壓縮的情況下,使用gzip程序查看壓縮文件的內容,那麼可以像下面這樣使用-c選項:
或者,你也可以像下面這樣使用zcat程序:
你也可以通過管道將輸出傳遞給less命令,從而一頁一頁的來查看輸出,就像下面這樣:
另外,zless程序也能夠實現和上面的管道同樣的功能。
1.5 使用 gzip 壓縮文件並指定壓縮級別
gzip的另外一個顯著優點是支持壓縮級別。它支持下面給出的 3 個壓縮級別:
1– 最快 (最差)
9– 最慢 (最好)
6– 默認級別
要壓縮名為ostechnix.txt的文件,使之成為「最好」壓縮級別的 gzip 壓縮文件,可以運行:
1.6 連接多個壓縮文件
我們也可以把多個需要壓縮的文件壓縮到同一個文件中。如何實現呢?看下面這個例子。
上面的兩個命令將會壓縮文件ostechnix1.txt和ostechnix2.txt,並將輸出保存到一個文件output.txt.gz中。
你可以通過下面其中任何一個命令,在不解壓縮的情況下,查看兩個文件ostechnix1.txt和ostechnix2.txt的內容:
如果你想了解關於gzip的更多細節,請參閱它的 man 手冊。
2. 使用 bzip2 程序來壓縮和解壓縮文件
bzip2和gzip非常類似,但是bzip2使用的是 Burrows-Wheeler 塊排序壓縮演算法,並使用哈夫曼(Huffman)編碼。使用bzip2壓縮的文件以 「.bz2」 擴展結尾。
正如我上面所說的,bzip2的用法和gzip幾乎完全相同。只需在上面的例子中將gzip換成bzip2,將gunzip換成bunzip2,將zcat換成bzcat即可。
要使用bzip2壓縮一個文件,並以壓縮後的文件取而代之,只需運行:
如果你不想替換原始文件,那麼可以使用-c選項,並把輸出寫入到新文件中。
如果要解壓縮文件,則運行:
或者,
如果要在不解壓縮的情況下查看一個壓縮文件的內容,則運行:
或者,
如果你想了解關於bzip2的更多細節,請參閱它的 man 手冊。
總結
在這篇教程中,我們學習了gzip和bzip2程序是什麼,並通過 GNU/Linux 下的一些例子學習了如何使用它們來壓縮和解壓縮文件。接下來,我們將要學習如何在 Linux 中將文件和目錄歸檔。
乾杯!
㈨ linux文件壓縮
tar[-j|-z][cv][-f建立的檔案名]filename...《==打包與壓縮
tar[-j|-z][tv][-f建立的檔案名]《==查看檔案
tar[-j|-z][xv][-f建立的檔案名][-C目錄]《==解壓縮
選項與參數:
-c:建立打包檔案,可搭配-v來觀察過程中被打包的檔案名(filename)
-t:查看打包檔案的內容含有那些檔案
-x:解壓縮的功能,可以搭配-C在特定的目錄解開;-c、-t、-x不能同時出現在一串指令列中。
-j:透過bzip2的支持進行壓縮/解壓縮:此時檔案名最好為*.tar.bz2
-z:透過gzip的支持進行壓縮/解壓縮:此時檔案名最好為*.tar.gz
-v:在壓縮/解壓縮的過程中,將正在處理文件名顯示出來
-ffilename:-f後面要立刻接被處理的檔案名!建議-f單獨寫一個選項
-C目錄:這個選項用在解壓縮,若要在特定目錄解壓縮,可以使用這個選項
tar命令是Unix/Linux系統中非常常用的備份文件方法,它的使用許可權是所有用戶。
tar命令語法:
tar[主選項+輔選項]文件名或目錄。使用該命令時,主選項是必須要有的,它告訴tar命令要做什麼,輔選項是輔助使用的,可以選用。
主選項:
-c創建新的檔案文件。如果用戶想備份一個目錄或是一些文件,就要選擇這個選項。相當於打包。
-x從檔案文件中釋放文件。相當於拆包。
-t列出檔案文件的內容,查看已經備份了哪些文件。
-r把要存檔的文件追加到檔案文件的末尾。例如用戶已經做好備份文件,又發現還有一個目錄或是一些文件忘記備份了,這時可以使用該選項,將忘記的目錄或文件追加到備份文件中
特別注意,主選項只能存在一個,c/x/t/r僅能存在一個!不可同時存在!因為不可能同時壓縮與解壓縮。
輔助選項:
-z:用gzip程序來壓縮或解壓縮文件,加上該選項後可以將檔案文件進行壓縮,但還原時也一定要使用該選項進行解壓縮。文件格式一般為xx.tar.gz或xx.tgz
-j:使用bzip2程序進行文件的壓縮或解壓,文件格式一般為xx.tar.bz2
-v:壓縮的過程中顯示文件!這個常用
-f:使用檔名,請留意,在f之後要立即接檔名!不要再加其他參數!
-p:使用原文件的原來屬性(屬性不會依據使用者而變)
-w每一步都要求確認。
--excludeFILE:在壓縮的過程中,不要將FILE打包!
範例:
範例一:將整個/etc目錄下的文件全部打包成/tmp/etc.tar
[root@ubuntu~]#tar-cvf/tmp/etc.tar/etc<==僅打包,不壓縮!
[root@ubuntu~]#tar-zcvf/tmp/etc.tar.gz/etc<==打包後,以gzip壓縮
[root@ubuntu~]#tar-jcvf/tmp/etc.tar.bz2/etc<==打包後,以bzip2壓縮
#特別注意,在參數f之後的文件檔名是自己取的,我們習慣上都用.tar來作為辨識。
#如果加z參數,則以.tar.gz或.tgz來代表gzip壓縮過的tarfile
#如果加j參數,則以.tar.bz2來代表bzip2壓縮過的tarfile
#上述指令在執行的時候,會顯示一個警告訊息:
#『tar:Removingleading`/"frommembernames』那是關於絕對路徑的特殊設定。
範例二:查看上述/tmp/etc.tar.gz文件內有那些被壓縮的文件
[root@ubuntu~]#tar-ztvf/tmp/etc.tar.gz
#由於我們使用gzip壓縮,所以要查閱該tarfile內的文件時,
#就得要加上z這個參數了!這很重要的!
範例三:將/tmp/etc.tar.gz文件解壓縮在/usr/local/src底下
[root@linux~]#cd/usr/local/src
[root@linuxsrc]#tar-zxvf/tmp/etc.tar.gz
#在預設的情況下,我們可以將壓縮檔在任何地方解開的!以這個範例來說
#我先將工作目錄變換到/usr/local/src底下,並且解開/tmp/etc.tar.gz
#則解開的目錄會在/usr/local/src/etc,另外,如果您進入/usr/local/src/etc
#則會發現,該目錄下的文件屬性與/etc/可能會有所不同喔!
範例四:在/tmp底下,我只想要將/tmp/etc.tar.gz內的etc/passwd解開而已
[root@linux~]#cd/tmp
[root@linuxtmp]#tar-zxvf/tmp/etc.tar.gzetc/passwd
#我可以透過tar-ztvf來查閱tarfile內的文件名稱,如果單只要一個文件,
#就可以透過這個方式來下達!注意到!etc.tar.gz內的根目錄/是被拿掉了!
範例五:我要備份/home,/etc,但不要/home/dmtsai
[root@linux~]#tar--exclude/home/dmtsai-zcvfmyfile.tar.gz/home/*/etc
另外:tar命令的C參數
$tar-cvffile2.tar/home/usr2/file2
tar:Removingleading'/'frommembersnames
home/usr2/file2
該命令可以將/home/usr2/file2文件打包到當前目錄下的file2.tar中,需要注意的是:使用絕對路徑標識的源文件,在用tar命令壓縮後,文件名連同絕對路徑(這里是home/usr2/,根目錄'/'被自動去掉了)一並被壓縮進來。使用tar命令解壓縮後會出現以下情況:
$tar-xvffile2.tar
$ls
………home…………
解壓縮後的文件名不是想像中的file2,而是home/usr2/file2。
$tar-cvffile2.tar-C/home/usr2file2
該命令中的-Cdir參數,將tar的工作目錄從當前目錄改為/home/usr2,將file2文件(不帶絕對路徑)壓縮到file2.tar中。注意:-Cdir參數的作用在於改變工作目錄,其有效期為該命令中下一次-Cdir參數之前。
使用tar的-Cdir參數,同樣可以做到在當前目錄/home/usr1下將文件解壓縮到其他目錄,例如:
$tar-xvffile2.tar-C/home/usr2
而tar不用-Cdir參數時是無法做到的:
$tar-xvffile2.tar/home/usr2
tar:/tmp/file:Notfoundinarchive
tar: