2011-07-11

實用的 7-Zip 指令

7-Zip 是一種跨平台、開放源碼、免費、強大的壓縮工具

但是,7-Zip 只在 Windows 提供界面,若使用其他作業系統,例如 Linux 及 Macintosh 便沒有界面
當然你仍然可以使用其他具有界面,能整合 7-Zip 的壓縮工具
但若果你在完全沒有用戶界面的情況下,如何使用 7-Zip 壓縮資料?

瀏覽 http://www.7-zip.org/download.html 並選擇合適版本安裝
如果使用 Ubuntu ,在 Terminal 輸入
sudo apt-get install p7zip p7zip-full p7zip-rar
如果使用 Mac OS 便瀏覽 http://7zx.en.softonic.com/mac 並下載 7zX
Windows 使用者若需要使用 7-Zip 指令需設定 PATH,或將 7-Zip 的執行檔移到 WINDOWS 的資料夾中

7-Zip 使用 7z or 7za or 7zr or p7zip 作為開首指令
基本上 7z7za 是相同的指令
7z 是一個執行檔案,若安裝在 Windows 中,會稱為 7z.exe 並存放在 7-Zip 的目錄中
7z7za7zrp7zip
7z7za 大致上相同,分別在於 7za 可以獨立運作
所以其體積較 7z 大,另外 7za7z 壓縮質素較差
7zr7za 唯一分別是 7zr 沒有提供密碼選項
p7zip 是一種輕量化 7-Zip ,只提供解壓縮功能(及說明功能)

標準指令: 7z <command>

壓縮檔案:
7z a output input
aArchive 指令
output 是輸出檔案名
如果沒有給予副檔名, 7-zip 會自動加入 .7z 為副檔名
如果輸出檔案已經存在,則會將新的資料加入至舊有的壓縮文件中
但如果輸出檔案包含的壓縮文件已經存在便會自動取代
input 是輸入檔案名
input 可以是一連串檔案及目錄,好像
7z a output file1 file2 directory1 directory2 data*

列出壓縮檔案中的資料:
解壓縮檔案前,有時需要先觀察壓縮檔案中的資料
7z l input
lList 指令
input 是輸入檔案名

刪除壓縮檔案中的指定資料:
有時壓縮了一大堆檔案及目錄後發現有些是沒有用途的
將壓縮檔案刪除再重新壓縮指定資料是其中一種方法
但是壓縮檔案相當大,將壓縮檔案刪除再重新壓縮並不是一個有效率的方法
因為你需要大量時間再次壓縮
所以應該刪除壓縮檔案中的資料才是有效率的方法
7z d input inner
dDelete 指令
input 是輸入檔案名
inner 是壓縮檔案中的資料名
inner 可以是一連串檔案及目錄,好像
7z e input inner1 inner2 innerdir1 innerdir2 data*
若果沒有指定刪除的資料,壓縮檔案中的資料將會被完全刪除

解壓縮壓縮檔案中的指定資料:
當觀察壓縮檔案後,便指定哪些資料需要解壓縮
因為壓縮檔案中有機會有大量資料,但只需要解壓縮一部分資料
若全面解壓縮便可能浪費更多時間
7z e input inner
eExtract 指令
input 是輸入檔案名
inner 是壓縮檔案中的資料名
inner 可以是一連串檔案及目錄,好像
7z e input inner1 inner2 innerdir1 innerdir2 data*
如果相同位置上已存在檔案或目錄,會有提示顯示
若沒有指定資料,便會完全解壓縮整個壓縮檔案
並部署所有檔案於當前目錄中
如果壓縮檔案保存大量資料,請確認定指令必須存在 inner
否則,檔前的目錄便會充斥所有解壓縮資料


以完整路徑解壓縮壓縮檔案中所有資料:
7z x input
xeXtract 指令
input 是輸入檔案名
使用此指令會自動建立與壓縮檔案相同名稱的目錄
並以完整路徑(結構性目錄)解壓縮壓縮檔案中所有資料於該目錄中
如果有一系列分割壓縮檔案
將它們移動至相同目錄,並解壓縮第一個分割檔案,亦可以將它們解壓縮

選項: 7z <command> <options>

壓縮比率: -mx?
7z a -mx5 output input
-mx 是壓縮比率選項
共有6種壓縮比率等級
-mx0 極快速,但完全沒有壓縮,大致上與複製相同,但還令整體上升大約100KB體積
-mx1 最快,最少壓縮比率
-mx3 較快,較少壓縮比率
-mx5 正常速度,正常壓縮比率,為預設壓縮比率
-mx7 較慢,較大壓縮比率
-mx9 最慢,最大壓縮比縮,最大可以壓縮 7000倍

壓縮類型: -t?
共有7種壓縮格式
-t7z 壓縮為 7-Zip 格式,為預設壓縮格式
-tgzip 壓縮為 GZip 格式
-tzip 壓縮為 Zip 格式,為高相容性格式
-tbzip2 壓縮為 BZip2 格式
-ttar 壓縮為 Tar 格式,常用於 Linux and Unix 作業系統
-tiso 壓縮為 ISO 格式
-tudf 壓縮為 UDF 格式
例如:
7z a -ttar output input
如果在輸出檔案名已經指定格式,便會以該格式壓縮
但若果 7-Zip 不能分析該壓縮格式,則會自動壓縮為 7-Zip 格式,例如:
7z a output.tar input
指定 -t? 的等級比副檔名為高
7z a -t7z output.tar input
在例子中給予 -t 為壓縮格式,同時又以副檔名為壓縮格式
但由於 -t 的等級比副檔名為高,所以最後會以 7-Zip 為壓縮格式

解壓縮位置-o?
設定解壓縮位置,可以使用絕對路徑或相對路徑,使用前小心 tarbomb
7z x -o/tmp input

設定密碼於壓縮檔案-p
建立一個具有密碼的壓縮檔案
7z a -p output input
當使用此指令後,壓縮前 7-Zip 會詢問密碼
(用戶亦可以在 -p 後輸入密碼,根據用戶不同情況下,自行判斷使用哪一種輸入密碼方法)

分割壓縮檔案:-v?
7z a -v100K output input
K 指 Kilobytes
M 指 Megabytes
G 指 Gigabytes
100K 指 100 Kilobyte 分割
若不指定單位,便會以 Byte 計算

建立自我解壓縮檔案:-sfx
7z a -sfx output input
如果使用 Windows ,建議指定 .exe 為副檔名
如果使用 Linux / Unix ,建議指定 .bin 為副檔名
在 Windows 不能解壓縮由 Linux / Unix 中所建立的自我解壓縮檔
在 Linux / Unix 不能解壓縮由 Windows 中所建立的自我解壓縮檔


7-Zip 還有很多指令及選項,但在下亦不能詳細解釋每種用途
因為還是用戶親自閱讀其用法
在 Terminal 輸入
7z --help

man 7z
就可以閱讀更加關於 7-Zip 的資料

2 則留言 :

  1. You have made nice post but you can know more about 7-zip (compressor/extractor) it at:
    https://basusoftgame.blogspot.com/2017/12/7-Zip-Unzip-file-for-Windows.html

    回覆刪除
    回覆
    1. 7z is funny and useful.
      Do you know chinese letters or using translate ?

      刪除