Linux基礎:對文件打包壓縮

一、須知

文件數量太多, 如果需要拷來拷去是不是很麻煩?    怎麼辦?   打包!

文件太大,通過網絡下載、傳輸會不會很費時間?     怎麼辦?   壓縮!

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

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

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


打包: 實質將許多文件和目錄打包成一個文件。

壓縮:把大文件或目錄通過壓縮算法變成一個較小的文件。

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

一、文件的打包和壓縮

tar : 打包、壓縮一個命令全搞定。  版本稍高的 tar 命令, 選項前的 - , 是可選的。

解壓縮“tar”包非常簡單,只需要這樣:

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

注意: filename 就是需要解壓縮"tar"包的文件名,而且使用後一種形式的時候,選項 f 一定要放到最後。 

創建“tar”包

$  tar -cvf  filename.tar  FILES

指定壓縮算法: z 代表 gz, j 代表 bz2, J 代表 xz。

$  tar  -zcvf  filename.tar.gz   FILES
$  tar  -jcvf  filename.tar.bz2  FILES
$  tar  -Jcvf  filename.tar.xz   FILES

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


僅解開單一文件的方法

## 首先 –jtvf 查看需要解壓的文件名
tar -jtvf filename.tar.bz2    # 查詢需要解壓的文件名:假設爲 etc/abc。
## 解壓,指定 etc/abc 文件名
tar –jxvf filename.tar.bz2  etc/abc

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

l  壓縮(選項:c):tar –jcvf  filename,tar.bz2     要被壓縮的文件或目錄名稱(可多個)

l  查詢(選項:t):tar –jtvf  filename,tar.bz2

l  解壓縮(選項:x):tar –jxvf  filename.tar.bz2 –C   欲解壓縮的目錄

因爲-f參數後必須緊接 “要新創建的文件名”。

 tar默認情況下會把絕對路徑前的 / 去掉, 這樣在恢復的時候, 如果不用-C / 指定根目錄爲其相對目錄, tar會在把解包後的目錄結構放在當前目錄。如果需要用絕對路徑解壓或者壓縮呢, 使用-P選項吧

wKioL1bS57Li0aTWAAGS3GCSzqc466.png


gzip & bzip2命令

gzip 常用選項:

  • -c    : 將壓縮輸出到 stdout,可通過重定向處理

  • -d   : 解壓縮

  • -v   : 詳細信息

  • -#  : 壓縮比 1-9

bzip 同gzip的用法一樣。-k選項 保留原文件

總結:

l  gzip和bzip2 不會保留原文件,而新生成一個壓縮文件

l  只能對單個文件壓縮


zip & unzip 命令:

# zip all.zip *.jpg     #這條命令是將所有.jpg的文件壓縮成一個zip包 
# unzip all.zip         #解壓縮



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章