➣ Reading Time: 9 minutes

前言

在搬運檔案的過程中,我們會時常有壓縮檔案的需求,
以方便我們進行搬運。

tar (tarball,實際上只將檔案打包、無壓縮)

  • 註:tar 無法直接用一般我們常見的方式進行檔案加密
  • tar 單檔打包會有約 2GB 的限制
  • 簡記法: c 壓縮、x 解壓縮

c = compress

壓縮:
tar -cvf data.tar FolderName

解壓縮:
tar -xvf data.tar

gzip

  • 簡記法: c 壓縮、x 解壓縮
壓縮:
tar -zcvf data.tar.gz FolderName

解壓縮:
tar -zxvf data.tar.gz

zip

  • 想要加密可以使用此方法。
  • zip 單檔會有 2.2GB 的限制
# 壓縮
zip -r FileName.zip DirName

# 解壓縮
unzip data.zip
7z x data.zip (似乎也可以,不確定?)

# 加密壓縮
zip -P password data.zip FolderName

# 加密解壓縮
unzip -p password data.zip 

7z

* 想要加密、切割檔案壓縮可以使用此方法。

安裝方法1 (使用 apt-get 直接安裝):

# 1. Update the package index:
sudo apt-get update

# 2. Install p7zip-full deb package:
sudo apt-get install p7zip-full

安裝方法2 (deb, debian 檔案):

加密壓縮

# 壓縮
7z a data.7z FolderName

# 加密壓縮
# 等待 7z 要求輸入密碼 (較安全,可以兩次確認密碼,也不會直接顯示在 history 中)
7z a data.7z FolderName -p 

# 直接輸入密碼 (注意: -p 與 PASSWORD 是直接連在一起的)
7z a data.7z FolderName -pPASSWORD

# 解壓縮
7z x data.7z

切割檔案壓縮

  • 7z “-v” 的參數目前支持 b, k, m, g,分別代表:bytes, kilobytes, megabytes, gigabytes
# 分成每個檔案 100m 去壓縮 (注意:-v 與 100m 是連在一起的)
7z -v100m a my_zip.7z FolderName

# 分成每個檔案 1g 去壓縮 (注意:-v 與 1g 是連在一起的)
7z -v1g a my_zip.7z FolderName

# 解壓縮 (輸入001檔即可,剩下會自動抓)
7z x my_zip.7z.001

結果:經壓縮後切割出的檔案

註:當出現以下訊息的解決方法

System ERROR:
E_FAIL

解決方法: 該路徑的權限不足,請更換資料夾後再重新執行此指令。

總結與合併使用:同時壓縮檔案並加密,依容量切割檔案

# 壓縮檔案並加密
7z -v1g a test.7z FolderName -p 

# 解壓縮檔案
7z x data.7z.001

結果:

  1. 加密壓縮後切割出的檔案

  2. 解壓縮的過程 (可以看到有找到4個檔案,Volumes = 4),最下方會要求輸入密碼

其他切割方法

可以參考這篇文章:【Linux】linux, ubuntu 使用 split 指令檔案切割、檔案合併

Reference

https://itsfoss.com/tar-vs-zip-vs-gz/
http://note.drx.tw/2008/04/command.html
https://itsfoss.com/password-protect-zip-file/
https://ubuntu.pkgs.org/18.04/ubuntu-universe-arm64/p7zip-full_16.02+dfsg-6_arm64.deb.html
https://superuser.com/questions/184557/how-to-create-multipart-7zip-file-in-linux
https://askubuntu.com/questions/134227/how-to-extract-files-from-a-split-7zip-archive

 ⭐Linux 指令 相關文章整理⭐:
⭐終端機 (terminal) 常用 總整理⭐:
1.(terminal指令 常用總整理)【Linux】linux/ubuntu/mac 基礎終端機 (terminal) 指令 & 基礎知識總整理,初學者/新手 必須知道的基礎指令 & 基礎知識大全(持續更新)
2.(terminal快速鍵 常用總整理)【Linux】linux/ubuntu/mac 基礎終端機 (terminal) 快速鍵/小技巧,初學者/新手 必須知道的一些實用功能!(持續更新)
3.(vim指令 常用總整理)【Linux】linux/ubuntu/mac vim 的 新手/初學者 的基礎使用指令 與 個人常用功能總整理 (持續更新)
⭐Linux 基礎指令篇⭐:
1.【Linux】(作業系統基礎知識) 簡單理解「相對路徑」與「絕對路徑」,程式設計 初學者/新手 必須知道的路徑知識總整理
2.【Linux】linux ubuntu 中利用 mkdir 建立資料夾 相關參數總整理 (必定建立資料夾、修改資料夾權限 777)
3.【Linux】linux ubuntu 使用 terminal (終端機) 關機 shutdown、重新開機 reboot 的方法
⭐Linux 網路相關指令篇⭐:
1.【Linux】利用 ifconfig 查詢 ip 並用 scp 傳送資料 – linux, ubuntu 基礎終端機指令學習 sample code (內含範例程式碼)
2.【Linux】使用 sshfs 連線 將遠方磁碟當作像是在自己電腦的硬碟 mount disk on other computer
3.【Linux】使用 curl 將網路上的檔案 透過終端機 terminal 的方式下載 download
⭐Linux 進階指令篇 (檔案處理相關)⭐:
1.【Linux】linux, ubuntu 壓縮檔案常用指令 tar gzip zip 7z 壓縮檔案切割、壓縮檔案加密 與 解壓縮套件安裝方法 (內附圖文說明)
2.【Linux】Linux 查詢資料夾內的檔案數目 ls -1 | wc -l
3.【Linux】linux ubuntu 中利用 tail -f 可以查看 log 並不斷更新
4.【Linux】在終端機 terminal 使用 ln -s 建立如 windows, mac, ubuntu 檔案系統上的捷徑 – 軟連結 (Symbolic Link)
5.【Linux】linux, ubuntu 使用 split 指令檔案切割、檔案合併
6.【Linux】Linux 運用 sed 進行檔案內容的取代 instead 用法
⭐Linux 進階指令篇 (搜尋相關)⭐:
1.【Linux】linux, ubuntu 使用 ps, grep, pgrep 找到程式碼的 相關資訊 與 pid (ps aux, ps -ef)
2.【Linux】linux ubuntu 使用 grep, awk, xargs 尋找需要的資料,快速濾出/篩選 結果欄位 所需要的資訊 (內附圖文說明) filter column
⭐Linux 特殊應用篇⭐:
1.【Linux】Linux 增加 swap 的虛擬記憶體空間
2.【Linux】linux / ubuntu 複製硬碟的方法 copy all disk
⭐Bash 自動化程式撰寫⭐:
1.【Bash】echo,bash 的 hello world 基本教學,開始自動化程式的第一堂課 / 撰寫腳本,利用 echo 顯示變數