Linux FAQ : 解壓縮

更新於 發佈於 閱讀時間約 7 分鐘

參考 :

1. UNIX/Linux 檔案壓縮與備份工具 tar 指令使用教學與範例(一):tar 檔案

2. Linux 使用 split 指令將大檔案切割成小檔案,方便網路傳輸

3. [Linux] tar/gzip 檔案壓縮與解壓縮、split/cat檔案分割與合併的實務應用

tar

常用參數

-c 打包檔案

-x 解開壓縮檔

-t 檢視壓縮檔的內容

-z 使用 gzip 壓縮

-v 顯示執行過程

-P 使用絕對路徑

-C:指定解打包或解壓縮的目錄,要注意的是這參數是大寫的C

-f 指定壓縮檔的檔案名稱。此參數的後面要接檔案名稱,因此要注意參數的順序 (通常是把 f 參數寫在最後一個,或是與其它參數分開使用)

  • 建立打包的 tar 檔 ( 不壓縮 ) :
tar -cvf 打包使用名稱.tar 來源檔案
  • 建立壓縮檔 ( 裡面會存有 tar 檔 ) :
tar -czvf 壓縮檔名稱.tgz 來源檔案

將 來源檔案 壓縮後,打包成一個名稱為 壓縮檔名稱.tgz 的檔案,

來源檔案 可以是多個檔案或目錄。如果有多個 來源檔案 時,

以空白字元分隔不同檔案名稱:

tar -czvf 檔案名稱.tgz 來源檔案1 來源檔案2 ... 來源檔案n
  • 檢視壓縮檔的內容:
tar -tzvf 壓縮檔名稱.tgz
  • 解開壓縮檔到目前的目錄:
tar -xzvf 壓縮檔名稱.tgz
  • 複製目錄:
tar -cvf - 來源目錄 | tar -xvf -

將 來源目錄 下的所有檔案及子目錄複製到目前的目錄,

這樣做的好處是可以保留原來的檔案屬性。

大量打包目錄或檔案

tar有一個好用的參數-T是一定要學會的:

有時候我們想要一次打包很多檔案,而且這些檔案是散落各地的,

此時就可以藉由此參數接上一個檔案列表,

tar就會依據這裡面的內容一個一個的去打包

tar -cvf demo.tar -T demo.list

而上面語法中的「demo.list」是可以自訂名稱的,

內容則是想要打包的檔案或者目錄,例如:

/home/demo/test
/home/demo/abc.txt

意思是執行完這個指令後,tar會打包「test」這個目錄以下

所有的檔案(包含子目錄),以及「abc.txt」這個檔案,

所以如果未來有很多不同的檔案或目錄要打包時,只要更新這個檔案就行了

指定解打包/解壓縮的目錄

範例三的解打包/解壓縮的位置預設都是在當前目錄下,

如果要指定某個目錄輸出的話,則要加入「C」這個參數,

例如下面指令就是將檔案解壓縮到「 /home/demo」的目錄下

tar -zxvf demo.tar.gz -C /home/demo
分割檔案

分割檔案 (範例:檔案分成最大 200M)

split -b 200M ubuntu.iso "ubuntu.iso.part"

像是 1 G 大小的檔案會產生 5 個 檔案 ( 原檔案不刪除 )

這樣就會占用 2 G ( 原檔案 + 分割後的檔案 )

使用 split 分割檔案

如果要將一個大檔案分割成許多個小檔案,可以使用 split 配合 -b 參數指定每個小檔案的大小,並指定輸出檔名的開頭名稱:

split -b 200M ubuntu.iso "ubuntu.iso.part"

預設的輸出檔案名稱會自動加上英文字母來區隔順序:

亦可以使用管線(pipe)結合其它的 Linux 指令,將資料直接分割後再儲存:

tar zcf - datafolder | split -b 200M - "datafolder.part"

如果想要將檔案依據大小均分為固定個數的檔案,可以使用 -n 參數,

並指定要分成擠的小檔案,

例如若要將 ubuntu.iso 這個檔案均分為 4 個小檔案,則執行:

split -n 4 ubuntu.iso "ubuntu.iso.part"

這樣每個分割出來的檔案其大小都會是相同的:

以行數分割檔案

split 除了以固定的檔案大小切割檔案之外,

對於文字檔也可以使用固定行數的方式來分割檔案,

這裡產生一個文字檔,然後將這個文字檔每三行儲存為一個小檔案:

ls -l / > mydata.txt
split -l 3 mydata.txt mydata.part

分割出來的檔案中,每個檔案都只有三行文字:

split 以固定行數分割檔案

如果要將文字檔案均分為大小相同的小檔案,但不想要把完整的行切斷,可以使用 -n l/N 參數,其中 N 是分割檔案數,例如:

ls -l / > mydata.txt
split -n l/3 mydata.txt mydata.part

這樣分割出來的檔案就不會有將一行資料切成兩行的問題:

使用 cat 合併檔案

使用 split 分割之後的檔案,可以使用 cat 來合併,例如:

cat datafolder.part* > datafolder.tar.gz

或是直接配合管線解壓縮:

cat datafolder.part* | tar zxvf -

檔名結尾

split 預設會使用兩個字母依序為分割的檔案名稱加上結尾,

我們可以使用 -a 參數來調整結尾的字母數,

若要以三個字母作為結尾,則執行:

split -a 3 -b 200M ubuntu.iso "ubuntu.iso.part"

split 以三個字母作為檔名結尾

如果想要使用數字的方式來作為檔名結尾,可以加上 -d 參數:

split -d -b 200M ubuntu.iso "ubuntu.iso.part"

輸出至標準輸出

有時候我們會想要將 split 的輸出導向至其他的程式,

這時候就可以使用 -n K/N 這種方式,其中 N 是要分割的檔案數目,

而 K 是要輸出至標準輸出的部份,例如:

ls -l / > mydata.txt
split -n l/2/3 mydata.txt

這樣會將檔案分為 3 等份,將第二份輸出至標準輸出,

而且分割資料時不會把行切斷。

留言
avatar-img
留言分享你的想法!
avatar-img
work b的沙龍
2會員
24內容數
Linux 相關 指令 與 情境 分享
work b的沙龍的其他內容
2023/02/10
改檔案修改權 chmod 代號 檔案 改檔案用戶與群組 chown 用戶 檔案
2023/02/10
改檔案修改權 chmod 代號 檔案 改檔案用戶與群組 chown 用戶 檔案
2022/11/28
冒險者 1–4 part 2 http://wonder100000000.blogspot.com/2022/11/1-4-part-2.html 第七話 炎熱對決 上集提要 支援軍透過一系列 配合 , 成功壓制 工廠 守軍 , 路克 與 工頭 也在一對一 單挑 中 , 獲得優勢 , 沙漠天龍與魔
Thumbnail
2022/11/28
冒險者 1–4 part 2 http://wonder100000000.blogspot.com/2022/11/1-4-part-2.html 第七話 炎熱對決 上集提要 支援軍透過一系列 配合 , 成功壓制 工廠 守軍 , 路克 與 工頭 也在一對一 單挑 中 , 獲得優勢 , 沙漠天龍與魔
Thumbnail
2022/11/28
冒險者 1–4 part 1 http://wonder100000000.blogspot.com/2022/11/1-4-part-1.html 1–4 第六話 砲擊 上集提要 沙漠天龍 支援軍與 魔獸工廠 守軍 展開交戰 , 逐漸陷入劣勢 , 工廠 強力守軍 , 三刺客 與 工頭 不斷以實力壓
Thumbnail
2022/11/28
冒險者 1–4 part 1 http://wonder100000000.blogspot.com/2022/11/1-4-part-1.html 1–4 第六話 砲擊 上集提要 沙漠天龍 支援軍與 魔獸工廠 守軍 展開交戰 , 逐漸陷入劣勢 , 工廠 強力守軍 , 三刺客 與 工頭 不斷以實力壓
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
介紹朋友新開的蝦皮選物店『10樓2選物店』,並分享方格子與蝦皮合作的分潤計畫,註冊流程簡單,0成本、無綁約,推薦給想增加收入的讀者。
Thumbnail
介紹朋友新開的蝦皮選物店『10樓2選物店』,並分享方格子與蝦皮合作的分潤計畫,註冊流程簡單,0成本、無綁約,推薦給想增加收入的讀者。
Thumbnail
語法: grep '^<starting-character>.*<ending-character>$' <file> grep 指令可以使用特殊字元的組合: 星號 ( * )、( $ ) 和 ( ^ )來過濾搜尋的內容。在我們的範例中,要使用 grep搜尋以特定字元開頭和結尾的內容,例如
Thumbnail
語法: grep '^<starting-character>.*<ending-character>$' <file> grep 指令可以使用特殊字元的組合: 星號 ( * )、( $ ) 和 ( ^ )來過濾搜尋的內容。在我們的範例中,要使用 grep搜尋以特定字元開頭和結尾的內容,例如
Thumbnail
我們偶爾在Linux的Bash腳本都會看到「pushd …」、「popd」的影子, 一開始看到也覺得這是什麼碗粿…, 這樣很難讀耶, 但指令被發明出來一定是有它存在的意義與道理的, 我們不能因為未知就直覺的認為該指令毫無作用, 而是要在正確的情境之下去使用。 pushd與popd我們就理解
Thumbnail
我們偶爾在Linux的Bash腳本都會看到「pushd …」、「popd」的影子, 一開始看到也覺得這是什麼碗粿…, 這樣很難讀耶, 但指令被發明出來一定是有它存在的意義與道理的, 我們不能因為未知就直覺的認為該指令毫無作用, 而是要在正確的情境之下去使用。 pushd與popd我們就理解
Thumbnail
個人在使用Fedora系統上想把比較個人的檔案資料加密起來,去google search 發現Linux有LUKS這套軟體可以達成我的需求。那這篇筆記主要記錄我安裝流程,所以很入門。
Thumbnail
個人在使用Fedora系統上想把比較個人的檔案資料加密起來,去google search 發現Linux有LUKS這套軟體可以達成我的需求。那這篇筆記主要記錄我安裝流程,所以很入門。
Thumbnail
sed 指令 ( 取代 , 截取行 ) 删除文件第一行: sed -i ‘1d’ filename 删除文件最后一行: sed -i ‘$d’ fileName 刪除首行空白 sed ‘s/^[ \t]*//g’ 參考 : https://codertw.com/前端開發/393321/ 在檔案最後
Thumbnail
sed 指令 ( 取代 , 截取行 ) 删除文件第一行: sed -i ‘1d’ filename 删除文件最后一行: sed -i ‘$d’ fileName 刪除首行空白 sed ‘s/^[ \t]*//g’ 參考 : https://codertw.com/前端開發/393321/ 在檔案最後
Thumbnail
Fedora Workstation 使用快一年至近至近體驗還不錯,最近在想Fedora有沒有可能跟arch那樣從最基礎Linux系統一點一滴安裝自己所需的軟體就好,沒想到Fedora也有提供這種安裝方法。那如何最小化安裝Feodra系統請繼續看下去。
Thumbnail
Fedora Workstation 使用快一年至近至近體驗還不錯,最近在想Fedora有沒有可能跟arch那樣從最基礎Linux系統一點一滴安裝自己所需的軟體就好,沒想到Fedora也有提供這種安裝方法。那如何最小化安裝Feodra系統請繼續看下去。
Thumbnail
Linux FAQ : 查看 jar 檔方式 jar 檔其實類似 zip 壓縮檔 除了可以用 zip 軟體來打開 在 Linux 可以用一些指令輔助
Thumbnail
Linux FAQ : 查看 jar 檔方式 jar 檔其實類似 zip 壓縮檔 除了可以用 zip 軟體來打開 在 Linux 可以用一些指令輔助
Thumbnail
patchm此文章主要藉由一個exadata 季度補丁來介紹下載方式,解壓縮,與目錄架構。 QFSDP Quarterly Full Stack Download Patch for Exadata (QFSDP)是僅用於EXADATA MACHINE 每季度發行的補丁,內容包括有: Opatch
Thumbnail
patchm此文章主要藉由一個exadata 季度補丁來介紹下載方式,解壓縮,與目錄架構。 QFSDP Quarterly Full Stack Download Patch for Exadata (QFSDP)是僅用於EXADATA MACHINE 每季度發行的補丁,內容包括有: Opatch
Thumbnail
進入目錄、列出目錄列表、讀取檔案內容、寫入檔案(資料)、變更檔案名稱、刪除檔案、目錄內新增檔案、變更目錄名稱、刪除目錄
Thumbnail
進入目錄、列出目錄列表、讀取檔案內容、寫入檔案(資料)、變更檔案名稱、刪除檔案、目錄內新增檔案、變更目錄名稱、刪除目錄
Thumbnail
檔案路徑(相對路徑、絕對路徑)、檔案讀入,匯出
Thumbnail
檔案路徑(相對路徑、絕對路徑)、檔案讀入,匯出
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News