天天看點

linux下的幾個歸檔和壓縮工具

歸檔和壓縮是不同的概念,歸檔就是把一些檔案包括檔案夾打包放在一個歸檔檔案中;壓縮主要是針對一個檔案,就是把一個檔案進行壓縮以便減少其在磁盤上占用的空間。

filename.tar 歸檔檔案(并沒有進行壓縮)

filename.tar.gz 歸檔壓縮檔案(先歸檔成.tar檔案,再進行gzip壓縮)

歸檔工具:tar

壓縮和解壓縮工具(括号中代表字尾名):gzip/gunzip(.gz);    bzip2/bunzip2(.bz2);    lzma/unlzma(.lzma);

歸檔壓縮工具:zip/unzip(.zip)

tar 指令

常用選項組合: -cf,  -cvf,  -cvvf,  -tf,  -tvf, -rvf,  -xf, -xvf, -Af, --delete,  --exclude, -zcvf, -zxvf, -jcvf,  -jxvf

tar -cf filename.tar file1 file2 folder1代表将file1 file2 folder1歸檔成filename.tar檔案。-c代表建立歸檔檔案,-f後面指定歸檔後的檔案名(指定要進行歸檔的檔案名的時候可以用*通配符,比如要歸檔所有字尾名為txt的檔案,則可以用 tar -cf filename.tar *.txt)

換成-cvf選項的話會在歸檔過程中列出所有歸檔的檔案名,如果想看到詳細的檔案資訊則可使用-cvvf(前面是一個v,這裡是2個v)

tar -tf filename.tar 可以檢視歸檔檔案中有哪些檔案,如果想檢視詳細的檔案資訊可以使用-tvf選項

tar -rvf filename.tar newfile 表示往filename.tar歸檔檔案中添加新的檔案 -r選項代表追加

tar -xf filename.tar 代表從歸檔檔案中提取檔案到目前目錄,如果要在提取過程中顯示提取的檔案名稱則用-xvf,要現實檔案詳細資訊則可用-xvvf,如果要将檔案抽取到指定的目錄則用-C選項,即 tar -xf filename.tar -C /path/to/destination_directory

如果要将一個歸檔檔案中的所有檔案添加到另一個歸檔檔案中則可使用-A選項:tar -Af filename1.tar filename2.tar則會将filename2.tar歸檔檔案中的所有檔案添加到filename1.tar中。

如果要從歸檔檔案中删除檔案則可使用--delete選項:tar -f filename.tar --delete file1 會從filename.tar中删除file1檔案。

如果要在歸檔的過程中排除某些檔案,則可使用--exclude選項:tar -cf filename.tar * --exclude "*.txt" 歸檔目前目錄下的所有檔案但是排除字尾名是.txt的檔案。

如果要在歸檔之後進行壓縮的話,可以分别加上-z(gzip壓縮),-j(bzip2壓縮),--lzma(lzma壓縮)

如: tar -zcvf filename.tar.gz *.txt 将目前目錄下所有以txt為字尾名的檔案進行歸檔并壓縮成gzip格式。或者 tar -jcvf filename.tar.bz2 *.txt 或 tar --lzma -cvf filename.tar.lzma *.txt

也可以不分别指定-z,-j或者--lzma,而是采用-a選項,這會根據-f後面的檔案名字尾來自動選擇壓縮的格式。如:tar -acvf filename.tar.gz *.txt 會自動采用gzip格式進行壓縮。

相對應的也會有-zxvf, -jxvf, --lzma -xvf等解壓縮并提取檔案的選項。

gzip filename指令會生成filename.gz的壓縮檔案(同時删除原檔案)

gunzip filename.gz會将壓縮檔案解壓為filename檔案(同時删除.gz檔案)

gzip -l filename.gz 會列出壓縮檔案的屬性資訊,包括壓縮後大小,壓縮前大小,壓縮率,壓縮前檔案名稱

zcat 指令無需解壓縮直接讀取.gz格式的檔案

zcat filename.gz 相當于cat filename,但是不進行解壓

bzip2/bunzip2與gzip/gunzip用法類似,據說比gzip壓縮效率更高(實際效果可能跟壓縮檔案的類型或者大小有關吧),字尾名為.bz2

lzma/unlzma據說效率比前兩種更好。字尾名為.lzma

以上三種壓縮工具均會删除原檔案(壓縮完之後會删除原檔案,解壓完會删除壓縮檔案)

zip是一種壓縮歸檔工具,既歸檔又壓縮。而且與上面三種壓縮工具不同的是zip/unzip并不會删除原來的檔案或者原來的.zip壓縮檔案

zip file.zip file1 file2 将file1,file2歸檔壓縮成file.zip

zip -r file.zip folder1 folder -r代表對目錄進行遞歸操作

zip file.zip -u newfile 更新壓縮檔案中的内容

zip -d file.zip file1 從file.zip中删除file檔案

unzip -l file.zip 列出壓縮檔案中的内容 (注意是unzip不是zip -l file.zip)

如有不當之處,還望指正!