封存程式
在Unix類的系統上做資料備份,建議還是用tar,它可較完整地保存檔案的各種屬性,不建議用zip或7z。如果只是有檔案想打包給別人用,但擔心對方不會用tar,那麼理所當然就用zip或7z。由於7z在許多方面的表現都比zip出色,也支援zip的格式,用法也不難,而且也相當普遍,所以在考慮使用zip時,除非有其他特殊因素,否則應該先認真考慮一下7z會是更好的選擇。也許讀者會想略過zip一節內容而直接看7z的,這兩者的用法並不像上述般有相似性。
zip
ZIP是被廣泛採用的封存檔格式,支援無損資料壓縮。ZIP檔可包含一或多個已被壓縮的檔案或目錄。可用幾種壓縮演算,以DEFLATE最常見。副檔名為.zip或.ZIP。支援基於密碼的對稱式加密,其他功能像檔案名稱加密、自解封存檔(Self-extractin archive, SFX)。也有人習慣稱呼PKZIP,而這稱呼實際上是軟體商品名稱,PK二字源自是ZIP格式創始人的名字。Ubuntu採用Info-ZIP,與PKZIP相容。指令形式:
zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]執行zip或unzip不加任何參數時會顯示簡單的使用方法,這裡就只提幾個zip的選項:
unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]
- -r:遞迴目錄。
- -#:數字0表不壓縮,1-9越高數字表越佳的壓縮。
- -q
- -v
- -x:排除所列的檔案
- -i:只包含所列的檔案
- -e:加密
- -n suffixes:只複製而不壓縮suffixes結尾的檔案,有多個時可用 : 或 ; 隔開,如: -n .gif:.jpg:.mp3
$ zip -r archive.zip dir1/
$ unzip -ddir2 archive.zip
上述的archive.zip也可省略掉副檔名,zip/unzip會自動搞定它。詳情可見zip與unzip的man page。
7z
壓縮的封存檔案格式,支援不同資料壓縮、加密演算法,副檔名為.7z。壓縮方法有LZMA, LZMA2, Bzip2, PPMd, DEFLATE……。壓縮比zip來的好。支援多緒。不儲存檔案系統的owner/group,若需要的話,建議改用tar -J。
7z在p7zip包中,在Ubuntu已預設安裝。p7zip中還有個7za,是單獨執行檔,比起使用plugins的7z處理較少格式,但執行速度稍快。這裡就只談7z命令的簡單使用。
7z支援的格式有:
- 打包/解包:7z, XZ, BZIP2, GZIP, TAR, ZIP與WIM
- 解包:AR, ARJ, CAB, CHM, CPIO, CramFS, DMG, EXT, FAT, GPT, HFS, IHEX, ISO, LZH, LZMA, MBR, MSI, NSIS, NTFS, QCOW2, RAR(有裝p7zip-rar的話), RPM, SquashFS, UDF, UEFI, VDI, VHD, VMDK, WIM, XAR與Z
指令形式:
7z <command> [<switches>... ] <archive_name> [<file_names>... ] [<@listfiles>... ]一些command像:
- i:顯示所支援格式的資訊。
- a:檔案加入封存。
- x:從封存解出檔案,帶完整路徑。
- e:從封存解出檔案,不含目錄名稱。
- t:測試封存的完整性。
- l:列示封存的內容。
- d:自封存中刪除檔案。
- u:更新檔案到封存中。
- rn:封存中的檔案改名。
- h:計算雜湊值。
- -i[r[-|0]]{@listfile|!wildcard}:包含檔案名稱。
- -x[r[-|0]]]{@listfile|!wildcard}:排除檔案名稱。
- -m{Parameters}:設置壓縮方法。Parameters會隨不同格式而有所不同,這裡只列幾個7z適用的:
- x=[0 | 1 | 3 | 5 | 7 | 9 ]:設定壓縮程度,預設5。0即不壓縮。
- s=[off | on ]:堅實模式,預設on。
- t=[off | on | {N}]:多緒模式,預設on。N是執行緒數量。只適用於LZMA / LZMA2壓縮,BZip2解縮/解壓縮。LZMA只能用2執行緒。
- hc=[off | on]:封存標頭壓縮,預設on。
- he=[off | on]:封存標頭加密,預設off。
- -o{Directory}:設定輸出目錄。若目錄不存在,會自動建立。
- -p{Password}:設定密碼。
- -sfx:建立可自解執行封存檔。
- -si:自stdin讀資料(如 tar cf - directory | 7z a -si directory.tar.7z)
- -so:寫資料到stdout(如 7z x -so directory.tar.7z | tar xf -)
- -t{Type}:設定封存種類。如果可從封存檔副檔名得知封存種類,就無須設定此項。
- -v{Size}[b|k|m|g]:建立卷冊。
- -y:假定所有詢問皆為是。
$ 7z a archive.7z folder1/
$ 7z a archive.zip folder1/
$ 7z a -p -sfx sfx_archive folder1/
最後一例的SFX檔可直接執行進行解開;或者也可以加上 -h 以顯示用法:
$ ./sfx_archive -h
較詳細使用可見man page,或是系統中的文件檔/usr/share/doc/p7zip/DOC/MANUAL/start.htm
沒有留言:
張貼留言