Linux下常用的檔案歸檔,壓縮和解壓縮命令

2021-09-27 13:22:24 字數 3694 閱讀 8781

命令              常見字尾         程式所在目錄

compress / uncompress     .z   .tar.z         /usr/bin

bzip2 / bunzip2          .bz  .bz2  .tbz  .tbz2           /bin

gzip / gunzip            .gz  .tar.gz  .tgz        /bin

zip / unzip           .zip            /usr/bin

tarcompress / uncompress

最初最簡單的壓縮指令,壓縮後檔案字尾名為 .z

常見與早期類unix系統中,目前使用較少。compress -d 等同與uncompress(在許多版本的linux中,uncompress其實呼叫的是compress -d,而自己並不是乙個真的程式)。

所有引數:

-d   解壓

-c   輸出壓縮或解壓的結果,並不刪除原始檔案。

-f    強迫寫入檔案,若目的檔已經存在,則會被覆蓋 (force)

-v    顯示進度

-b    最大位元數(數字越大,壓縮率越高,範圍是 9-16 ,預設值是 16)

-v    顯示版本資訊

-r     遞迴壓縮資料夾及其子檔案

eg:compress -vf foobar.bat     強制壓縮並顯示進度,若目標文件存在則覆蓋(刪除原始檔案)

compress -dv foobar.bat.z 解壓並顯示進度

compress -dc foobar.bat.z 解壓並顯示解壓內容

compress -b 12 foobar.dat 

compress -c foobar.bat > newname.bat.z    將壓縮後的資料輸出後再匯入指定名稱壓縮包

bzip2 / bunzip2

常用引數:

-c   輸出壓縮或解壓的結果

-z   壓縮

-d   解壓(等同與bunzip2命令)

-k   保留原檔案

-v   顯示進度 

-f   強制執行,目標檔案存在則覆蓋 

-1 .. -9   壓縮比的引數, -9 最佳, -1 最快

--fast     alias for -1

--best    alias for -9

eg:bzip2 foo.bat  壓縮foo.bat為foo.bat.bz2,並不保留原檔案

bzip2 -zfk foo.txt  強制壓縮,並保留原始檔

bzip2 -zf -9 -c foo.txt > bar.txt.bz2  強制壓縮,最大壓縮率,更改名稱並保留原始檔

bzcat foobar.bz2  檢視壓縮包內容,而不解壓

gzip / gunzip

gunzip甚至還可以去解其他壓縮程式如 compress 或 zip 壓縮出來的檔案,但並不贊同這樣做。

常用引數同上(沒有-k) 

zip-- 打包並壓縮

其格式與windows中.zip格式完全一致,可通用,適合與windows通訊使用。

實用引數:

-d  刪除(drop)

-g  新增(group)

-u  更新

-r  遞迴壓縮

-t  測試有無損壞,不解壓

-q  安靜模式

*    包含系統檔案和隱藏檔案

eg:zip -r all.zip foo.zip bar.bat /home/user1  壓縮本目錄下foo.zip、bar.bat和/home/user1/資料夾為all.zip

zip new1.zip my1*.doc      壓縮my1*.doc為new1.zip,new1.zip 可簡寫成 new1,系統會自行預設 .zip副檔名。

zip -d new1.zip my18.doc   刪除new1.zip中my18.doc

zip -g new1.zip my32.doc   往 new1.zip中加入my32.doc

zip -u new1.zip my2*.doc  更新new1.zip中my2*.doc

zip -r new2.zip mydir  壓縮mydir目錄為new2.zip

zip -q -r all.zip *      壓縮本資料夾所有(包括系統檔案和隱藏資料夾)

unzip-- 解壓

zip只能打包壓縮,unzip才是解壓命令,實實在在的真正的程式。

常用引數(所指為更新內容):

-d    解壓到制定目錄

-v/l  檢視壓縮的檔案,不解壓

-f     更新已存在

-n    更新不存在

-u    全部

-o    直接覆蓋,不詢問

-fo   直接覆蓋已存在

-uo  覆蓋更新所有

-c    不計大小寫

-l    一律將檔名轉為小寫 

-j   去除資料夾

eg:unzip foo.zip  解壓foo.zip到當前目錄

unzip -n text.zip -d /tmp  解壓test.zip到/tmp,僅更新不存在

unzip -j all.zip -d /tmp      加壓all.zip到/tmp,去除資料夾

unzip onepackage.zip a*.doc  解壓 onepackage.zip 內 a*.doc 的檔案

tar-- 歸檔打包

引數:-c  產生新檔案(create);

-x  解壓

-t   檢視

注意,引數 c/x/t 僅能存在乙個,不可同時存在

-z  gzip屬性

-z  compress屬性

-j  bzip屬性

-f   使用檔名,注意,在 f 之後要立即接檔名,不要再加引數。(我們可以將-f看成乙個必加引數)

tar -zcvfp tfile sfile  -- 錯誤 

tar -zcvpf tfile sfile  -- 正確 

-u  更新某個檔案

-r  增加某個檔案

-p  使用原檔案的原來屬性(屬性不會依據使用者而變)

-p  可以使用絕對路徑來壓縮

-n  比後面接的日期(yyyy/mm/dd)還要新的才會被打包進新建的檔案中

--exclude file  在壓縮的過程中,不要將 file 打包

eg:tar -cf new1.tar my1*.doc  把所有 my1*.doc 的檔案打包為 new1.tar

tar -rf new1.tar my2*.doc  向new1.tar中增加 my2*.doc

tar -uf new1.tar my18.doc   修改......

tar -tf new1.tar       列出... 

tar -xf new1.tar         解壓... 

tar -zxvf onepackage.tar.gz  解壓(傳說中的神奇解壓命令)

tar -zcvf /tmp/etc.tar.gz /etc  打包後,以 gzip 壓縮 

tar -zxvf /tmp/etc.tar.gz etc/passwd  指定目錄解壓 

Linux下的檔案壓縮及歸檔

在linux系統下檔案可以被壓縮成tgz bz2或者zip格式,其中bz2的壓縮比率最大,同樣的檔案打包後其占有的記憶體會更小,zip格式的壓縮包是比較通用的,在各種平台上相容,但是其壓縮的比率也是最小的。對檔案的歸檔操作使用的是tar命令,tar命令後面可以跟隨的選項引數有以下幾種 c 建立歸檔檔...

linux檔案壓縮歸檔

gz gzip gunzip gzip d tar tar cf xf tar.gz tar zcf zxf zip zip r unzip bz2 bzip2 bunzip2 tar.bz2 tar cjf xjf 1 tar cf bak.tar log 將當前目錄下的所有log檔案打成乙個叫做...

Linux檔案歸檔和壓縮

歸檔檔案是乙個檔案和目錄的集合,而這個集合被貯存在乙個檔案中。歸檔檔案沒有經過壓縮 它占用的空間是其中所有檔案和目錄的總和。壓縮檔案也是乙個檔案和目錄的集合,且這個集合也被貯存在乙個檔案中,但是,它的貯存方式使其所占用的磁碟空間比其中所有檔案和目錄的總和要少。歸檔檔案不是壓縮檔案,但是壓縮檔案可以是...