首頁 > 軟體

Linux基礎教學:對檔案打包壓縮

2020-06-16 17:45:37

一、須知

  • 檔案數量太多, 如果需要拷來拷去是不是很麻煩?    怎麼辦?  打包!
  • 檔案太大,通過網路下載、傳輸會不會很費時間?    怎麼辦?  壓縮!

在Linux環境中,打包壓縮檔案的擴充套件名多是:【*.tar, *.tar.gz, *.gz, *.bz2, *.tar.xz】這些檔案統稱為“tar”包, 想想為什麼會有這樣的擴充套件名麼? 不是說過 Linux的擴充套件名沒有什麼用嗎?  【不同的字尾,表明所使用的壓縮演算法不同, 壓縮比從低到高的排序是: gz < bz2 < xz ; 壓縮速度則正好相反 gz > bz2 > xz】

是的。 副檔名對於Linux來說, 並沒有任何卵用。 然而、但是, 由於Linux支援的壓縮命令很多,而且不同指令所採用的壓縮技術不相同,當然彼此之間可能就無法互通(壓縮、解壓縮)。所以, 當我們下載到某個壓縮檔案時,自然就需要知道該檔案是由哪種壓縮指令製作的,好用來對照進行解壓縮。

也就是說,雖然Linux檔案的擴充套件名和其屬性沒有絕對關係,但是為了便於我們易於識別,所以適當的擴充套件名還是必要的。

打包: 實質將許多檔案和目錄打包成一個檔案。
壓縮:把大檔案或目錄通過壓縮演算法變成一個較小的檔案。

大多命令僅能針對單一檔案來進行壓縮,gzip與bzip2也能對目錄進行壓縮,但是結果為:將目錄內的所有檔案“分別、單獨”進行壓縮操作。

一、檔案的打包和壓縮
tar : 打包、壓縮一個命令全搞定。  版本稍高的 tar 命令, 選項前的 - , 是可選的。
解壓縮“tar”包非常簡單,只需要這樣:

12 $  tar  xf  filename
$  tar  xf  filename  -C /tmp    # 解壓到/tmp目錄

注意: filename 就是需要解壓縮"tar"包的檔名,而且使用後一種形式的時候,選項 f 一定要放到最後。
建立“tar”包
1 $  tar -cvf  filename.tar  FILES

指定壓縮演算法: z 代表 gz, j 代表 bz2, J 代表 xz。
123 $  tar  -zcvf  filename.tar.gz  FILES
$  tar  -jcvf  filename.tar.bz2  FILES
$  tar  -Jcvf  filename.tar.xz  FILES

注意:其中FILES表示被打包盒壓縮的檔案或目錄名。

僅解開單一檔案的方法
1234 ## 首先 –jtvf 檢視需要解壓的檔名
tar -jtvf filename.tar.bz2    # 查詢需要解壓的檔名:假設為 etc/abc。
## 解壓,指定 etc/abc 檔名
tar –jxvf filename.tar.bz2  etc/abc

記憶: 記住 tar xvf  然後 把 x 位置替換為 c , t 就行了。

  • 壓縮(選項:c):tar –jcvf  filename,tar.bz2    要被壓縮的檔案或目錄名稱(可多個)
  • 查詢(選項:t):tar –jtvf  filename,tar.bz2
  • 解壓縮(選項:x):tar –jxvf  filename.tar.bz2 –C  欲解壓縮的目錄

因為-f引數後必須緊接 “要新建立的檔名”。
 tar預設情況下會把絕對路徑前的 / 去掉, 這樣在恢復的時候, 如果不用-C / 指定根目錄為其相對目錄, tar會在把解包後的目錄結構放在當前目錄。如果需要用絕對路徑解壓或者壓縮呢, 使用-P選項吧

gzip & bzip2命令
gzip 常用選項:
-c    : 將壓縮輸出到 stdout,可通過重定向處理

-d  : 解壓縮

-v  : 詳細資訊

-#  : 壓縮比 1-9

bzip 同gzip的用法一樣。-k選項 保留原檔案
總結:

  • gzip和bzip2 不會保留原檔案,而新生成一個壓縮檔案
  • 只能對單個檔案壓縮

zip & unzip 命令:
# zip all.zip *.jpg    #這條命令是將所有.jpg的檔案壓縮成一個zip包 
# unzip all.zip        #解壓縮

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-03/129013.htm


IT145.com E-mail:sddin#qq.com