http://blog.csdn.net/liuyuze/article/details/2865118 Linux下有很多壓縮工具,7z是已知最大壓縮比的工具,它的使用比較復雜,以下我記下的一些技巧
壓縮命令(結合tar命令): tar cf - /home/test | 7z a -si test.tar.7z
上面命令將 /home/test 文件夾壓縮為 test.tar.7z 文件
解壓命令(結合tar命令) : 7z x -so test.tar.7z | tar xf - /home/alex
這個命令將test.tar.7z 的內容解壓到 /home/alex目錄下
根據不同需要,還可以設置不同壓縮比 ,這個命令特別適合做RAMDISK時候使用,大大節省寶貴的空間,希望對各位有幫助!
下面是壓縮參數設置,引用地址:http://anywolfs.com/liuhui/7-zip/cmdline/switches/method.htm
原文如下
-m (設置壓縮算法) 選項
指定壓縮算法。
語法
-m<method_parameters>
此選項的格式依壓縮檔案的類型而定。
Zip
- x=[0 | 5 | 9 ]
-
設置壓縮等級
| 壓縮等級 |
說明 |
| 0 |
不壓縮。 |
| 5 |
默認的壓縮等級。 |
| 9 |
最大壓縮等級。壓縮后的文件會更小。但是在壓縮的時候會比較慢而且需要較多的物理內存。 |
- fb={NumFastBytes}
-
設置 Deflate 編碼器的單詞大小。您可以在 3 到 255 范圍之內更改。在 Deflate 算法下,它的默認值是 32;在 Deflate 64 算法下,它的默認值是 64。如果要壓縮的多個文件中,有很多排列相同的字節,比如說內容及格式極為相同的兩個純文本文檔,那么在壓縮的時候如果有較大的單詞大小,將會在一定程度上提高壓縮比。所以,通常情況下,其數量越大,壓縮后的文件就會越小。但是在壓縮和解壓縮的時候會比較慢而且需要較多的物理內存。
- pass={NumPasses}
-
設置 Deflate 編碼器的傳送大小。您可以在 1 到 4 范圍之內更改。在 Deflate 算法下,它的默認值是 1;在 Deflate 64 算法下,它的默認值是 3。此項可略微提升壓縮比,但并不明顯。
GZip
除了 GZip 不支持“儲存”壓縮算法之外,GZip 和 Zip 一樣使用著相同的參數。
7z
- x=[0 | 1 | 5 | 7 | 9 ]
-
設置壓縮等級
| 壓縮等級 |
說明 |
| 0 |
不壓縮. |
| 1 |
快速壓縮:LZMA 快速算法、32KB 字典大小、HC3 Match finder、BCJ 過濾器。 |
| 5 |
正常壓縮:LZMA 標準算法、2 MB 字典大小、BT4 Match finder、單詞大小為 32、BCJ 過濾器。 |
| 7 |
最大壓縮:LZMA 最大算法、8 MB 字典大小、BT4 Match finder、單詞大小為 64、BCJ 過濾器。 |
| 9 |
極限壓縮:LZMA 最大算法、32 MB 字典大小、BT4b Match finder、單詞大小為 64、BCJ2 過濾器。 |
- s=[off | on | [e] [{N}f] [{N}b | {N}k | {N}m | {N}g)]
-
開啟或關閉固實模式。此選項的默認值是 s=on。開啟或關閉固實壓縮檔案模式。在創建固實壓縮檔案模式中,它把壓縮檔案中的所有文件都當成一個連續數據流來看待。通常情況下,固實壓縮可增加壓縮比,特別是在添加大量小文件的時候。
| e |
為每一種文件擴展名使用單獨的固實數據流 |
| {N}f |
設置在一個固實數據流種文件的個數 |
| {N}b | {N}k | {N}m | {N}g |
設置固實數據流的大小(字節) |
不同的壓縮等級對固實數據流大小的限制:
| 壓縮等級 |
大小 |
| 儲存 |
0 B |
| 快速 |
16 MB |
| 正常 |
256 MB |
| 最大 |
1 GB |
| 極限 |
4 GB |
對固實數據流大小的限制雖然能應響到壓縮比,但是它還是有相當多的優勢:
- 萬一壓縮檔案損壞,并不會丟失所有數據。
- 減少了文件的釋放時間。
在當前的版本中,您只能更新在壓縮時未選擇“創建固實壓縮檔案”的壓縮檔案。也就是說當前版本不支持固實壓縮檔案的更新。
示例:
-s=100f10m
設置固實模式使每個固實數據流種最多 100 文件,并且最大 10 MB 。
- f=[off | on]
-
開啟或關閉可執行文件壓縮過濾器:dll、exe、ocx、sfx、sys。它用于 BCJ2 過濾器(使用極限壓縮)及 BCJ 過濾器中。此選項的默認值是 f=on.
- hc=[off | on]
-
開啟或關閉檔案文件頭壓縮。此選項的默認值是 hc=on。如果開啟檔案文件頭壓縮,一部分檔案的文件頭將使用 LZMA 算法進行壓縮。
- hcf=[off | on]
-
開啟或關閉檔案文件頭完全壓縮。此選項的默認值是 hcf=on。如果開啟檔案文件頭完全壓縮,那么此壓縮檔案只有 7-Zip 2.30 beta 25 及更高的版本才能支持。
- he=[off | on]
-
開啟或關閉檔案文件頭加密。此選項的默認值是 he=off。
- {N}
-
設置算法的順序。它也可以用算法關聯參數。最小值為 0。含有從號的算法將被首先使用。
- b{C1}[s{S1}]:{C2}[s{S2}]
-
將輸出流 S1 及編碼器 C2 中的輸入流 S2 與編碼器 C1 綁定。如果未指定流的大小,那么大小將為 0。
通常情況下,編碼器有一個輸入流及一個輸出流。而在 7z 中,一些編碼器有多個輸入及輸出流。
舉個例子,BCJ2 編碼器有有關輸入流及四個輸出流。
- mt=[off | on]
-
開啟或關閉多線程壓縮模式。在多線程支持模式中,7-Zip 將使用兩個線程來進行壓縮。這樣的話,對于多處理器系統,那么壓縮速度將提升 70-80%。對于 Pentium 4 超線程處理器,壓縮速度將提升 25% 左右。但解壓縮時只使用單獨線程。注意!此選項僅對 LZMA 壓縮算法有效。
- {N}={MethodID}[:param1][:param2] ... [:paramN]
-
設置壓縮算法。在 7z 格式中,您可以使用許多壓縮算法。此選項的默認算法是 LZMA。
此參數必須是下列格式中的任意一種:
- {ParamName}={ParamValue}。
- {ParamName}{ParamValue},{ParamValue} 是一個數值,并且 {ParamName} 中不包含數字。
支持的壓縮算法:
| MethodID |
說明 |
| LZMA |
基于 LZ 之上的壓縮算法。 |
| PPMd |
基于 Dmitry Shkarin 之上的算法 PPMdH 并加以優化。通常能對純文本提供高壓縮比及較快的解壓縮速度。 |
| BZip2 |
基于 BWT 的標準壓縮算法。通常能對純文本提供較高壓縮比及相當不錯的解壓縮速度。 |
| Deflate |
ZIP 及 GZip 格式的標準壓縮算法。沒有很高的壓縮比。但是它擁有十分快的壓縮及解壓縮速度。Deflate 壓縮算法只支持 32 KB 字典大小。 |
| BCJ |
(CALL、JUMP)32 位 x86 可執行文件轉換器。 |
| BCJ2 |
(CALL、JUMP、JCC)32 位 x86 可執行文件轉換器(第二版)。 |
| Copy |
不壓縮。 |
LZMA
LZMA 是基于 Lempel-Ziv(由以色列數學家 A.Lempel 和 J.Ziv 共同開發的壓縮算法)之上的壓縮算法。它能提供相當快的解壓縮速度(約比壓縮快 10 到 20 倍)。對內存的需求也不盡相同(詳細信息請參見 d={Size}[b|k|m] 選項)。
- a=[0|1|2]
-
設置壓縮等級:0=快速、1=正常、2=最大壓縮。默認值為 1。
- d={Size}[b|k|m]
-
設置 LZMA 壓縮算法的字典大小。您可以使用字節、KB 或 MB 來指定此項。字典大小的最大值為 256 MB=2^28 字節。正常模式下,LZMA 的字典大小默認值為 21(2 MB) ;最大模式(-mx=7)下為 23(8 MB);極限模式(-mx=9)下為 25(32 MB)。如果您未指定 [b|k|m] 項,字典大小將自動根據壓縮等級來選擇相應的單位。對于 LZMA 算法的文件解壓縮,若壓縮文件的字典大小為 64 MB,則解壓縮時就需要 64 兆可用的物理內存。
- mf={MF_ID}
-
設置 LZMA 壓縮算法的匹配器。默認算法為 bt4。bt* 類的算法所需的內存比 pat* 類所需的內存少。通常情況下 bt4 的工作速度比 pat* 快得多,然而部分文件格式在 pat* 算法中可以工作得很快。hc* 類算法并沒有很好得壓縮比,但是它與快速模式(a=0)結合使用通常會工作得相當快。所需內存依字典大小而定(參見下表)。
| MF_ID |
所需內存 |
說明 |
| bt2 |
d×9.5 + 1 MB |
二進制樹;2 散列字節。 |
| bt3 |
d×9.5 + 65 MB |
二進制樹;2-3(完整) 散列字節。 |
| bt4 |
d×9.5 + 6 MB |
二進制樹;2-3-4 散列字節。 |
| bt4b |
d×9.5 + 34 MB |
二進制樹;2-3-4(大) 散列字節。 |
| pat2r |
d×26 + 1 MB |
Patricia 樹;2-位節點;可移動。 |
| pat2 |
d×38 + 1 MB |
Patricia 樹;2-位節點。 |
| pat2h |
d×38 + 77 MB |
Patricia 樹;2-位節點;2-3 散列字節。 |
| pat3h |
d×62 + 85 MB |
Patricia 樹;3-位節點;2-3 散列字節。 |
| pat4h |
d×110 + 101 MB |
Patricia 樹;4-位節點;2-3 散列字節。 |
| hc3 |
d×5.5 + 1 MB |
Hash Chain;-3 散列字節。 |
| hc4 |
d×5.5 + 6 MB |
Hash Chain;2-3-4 散列字節。 |
注意:操作系統同樣需要一部分物理內存來維持系統得正常運行。所以至少要剩余 32 可用物理內存。
- fb={N}
-
設置 LZMA 壓縮算法的緊縮字節。有效范圍從 5 到 255。正常模式下默認值為 32;最大模式下為 64 。通常情況下,較大的數值能略微提高壓縮比。但同時也會降低壓縮速度。
- lc={N}
-
設置 Literal Context 位數。有效范圍從 0 到 8。默認值為 3。有時壓縮檔案中含有大文件會自動使用 lc=4。
- lp={N}
-
設置 Literal Pos 位數。有效范圍從 0 到 4。默認值為 0。
- pb={N}
-
設置 Pos 位數。有效范圍從 0 到 4。默認值為 2。
PPMd
PPMd 是 PPM-based 壓縮算法的簡寫。它基于 Dmitry Shkarin 的算法 PPMdH 并對其源代碼加以優化。PPMd 通常能對純文本提供高壓縮比及較快的解壓縮速度。壓縮和解壓縮的速度完全相同,所需的內存大小也一樣。
- mem={Size}[b|k|m]
-
設置 PPMd 算法使用的內存多少。您可以使用字節、KB 或 MB 來指定此項。最大值為 2 GB=2^31 字節;默認值為 24(16MB)。如果您未指定 [b|k|m] 項,字典大小將自動根據壓縮等級來選擇相應的單位。PPMd 在壓縮和解壓縮時所需的內存大小是相同的。
- o={Size}
-
設置 PPMd 算法壓縮命令。其大小必須在 [2,32] 范圍內。默認值為 6。
BCJ2
BCJ2 是 32 位 x86 可執行文件轉換器(第二版)。它通過轉換分支指令來對文件進行進一步壓縮。
BCJ2 編碼器有一個輸入流和四個輸出流:
- s0:干流。提供進一步的壓縮。
- s1:CALL 值轉換流。提供進一步的壓縮。
- s2:JUMP 值轉換流。提供進一步的壓縮。
- s3:服務流。它已經備壓縮過。
如果使用 LZMA 壓縮算法,s1 及 s2 流的字典大小將會比 s0 流的小(512 KB)。
示例
7z a -tzip archive.zip *.jpg -m0
不壓縮而直接將 *.jpg 文件添加到 archive.zip 檔案。
7z a -t7z archive.7z *.exe *.dll -m0=BCJ -m1=LZMA:d=21 -ms -mmt
添加 *.exe 及 *.dll 文件到固實壓縮檔案 archive.7z。使用 LZMA 壓縮算法、2 MB 字典大小及 BCJ 轉換器。壓縮將開啟多線程優化(如果可用)。
7z a -t7z archive.7z *.exe *.dll -m0=BCJ2 -m1=LZMA:d23 -m2=LZMA:d19 -m3=LZMA:d19 -mb0:1 -mb0s1:2 -mb0s2:3
添加 *.exe 及 *.dll 文件到壓縮檔案 archive.7z。使用 LZMA 壓縮算法、BCJ2 轉換器、為主輸出流(s0)使用 8 MB 字典大小、LZMA 算法為 BCJ2 轉換器的 s1 及 s2 輸出流使用 512 KB 字典大小。
7z a -t7z archive.7z *.txt -m0=PPMd
添加 *.txt 文件到壓縮檔案 archive.7z。 使用 PPMd 壓縮算法。
可以和此選項結合使用的命令
a (添加), d (刪除), u (更新)
其它
選項: -t (設置壓縮檔案格式)