文件的壓縮和解壓縮是計算歷史上最有用的創(chuàng)造之一,但缺乏可移植性和開放工具是阻礙它發(fā)揮其應(yīng)有作用的最主要的一個障礙。只要我們是與其他使用類似 Unix 操作系統(tǒng)的用戶交換文件,就可以使用例如 compress
、gzip 和 bzip2 這樣的可移植工具(如需鏈接,請參閱 參考資料 )。但世界上其他人使用的是各種各樣的專用軟件 -- 甚至專用壓縮算法 -- 擁有者可能永遠也不會將它們公之于眾。
這種事態(tài)發(fā)展下去會很危險。想象一下,將來我們可能無法對檔案的重要部分譯碼,原因是我們創(chuàng)建它們時使用的是專用工具和算法,而那些工具運行所在的操作系統(tǒng)和硬件已逐漸過時,消失不見。這就是為什么我們應(yīng)該使用開放源碼壓縮工具,或者至少使用免費和有完善記載算法的商業(yè)壓縮工具的原因。(只是要記住避免使用任何特殊的增強。)
本文是有關(guān)在 Linux 操作系統(tǒng)上使用 .arc
、 .arj
、 .lzh
( .lha
)、 .rar
、 .sit
、 .zip
和 .zoo
文件的指南。我選擇討論這些特殊的格式是因為三種最流行的操作系統(tǒng) (MS-DOS、微軟 Windows 和 Mac OS)的用戶最常使用它們。我之所以寫這篇指南是希望引導(dǎo)大家快速找出正確的工具,而不是詳細地從技術(shù)上討論文件壓縮技術(shù)。
最后,我想簡短說明一下自抽取文件。這樣的檔案往往位于包含壓縮格式數(shù)據(jù)的現(xiàn)實程序中。執(zhí)行它們時,它們會解包,并將存儲在程序主體內(nèi)的數(shù)據(jù)復(fù)制到您指定的任何驅(qū)動器上。唯一的問題是它們無法在 Linux 上使用,沒有工具可以抽取它們。在這種情況下,需要讓創(chuàng)建檔案的那個人將它作為一個一般檔案壓縮。
目前先說到這里。我希望這個指南能對您有所幫助,并期待著您的意見和建議。
索引
.arc
帶有 .arc
擴展名的文件相對來說比較少見。如果您偶然碰到一個,基本上可以認(rèn)定它是使用舊的 MS-DOS SAE ARC 或 PKware PKARC 歸檔實用程序創(chuàng)建的。這種形式在 Linux 上的支持性不是太好,并很難指望在 Linux 機器上對這些文件解壓縮。如果需要創(chuàng)建 .arc
文件,嘗試在 DOSEMU 或 VMware 下運行原始 SAE ARC 或 PKware PKARC(在攜帶 MS-DOS 實用程序的 FTP 服務(wù)器上查找它們)。
要解壓縮 .arc
文件,使用 Aladdin Expander for Linux。寫這篇文章的時候,Aladdin Expander 可以為公眾 Beta 測試目的免費獲得;它是否繼續(xù)免費還是個未知問題。
要解壓縮 .arc
文件,輸入 unstuff file.arc
。 -d
是個有用的選項,指定解壓縮文件的目標(biāo)位置。例如: unstuff -d=./home/james/incoming file.arc
。
注:要了解更多有關(guān) Aladdin Expander for Linux 的詳細信息,請閱讀有關(guān) .sit文件的那一節(jié)。
VMware: http://www.vmware.com
DOSEMU: http://www.dosemu.org
Aladdin 系統(tǒng): http://www.aladdinsys.com/expander/expander_linux_login.html
返回到索引
.arj
帶有 .arj
擴展名的文件是使用 ARJ Software 用于 MS-DOS 和 Windows 的 ARJ 實用程序創(chuàng)建的。因為 ARJ 是一種不能免費獲得源代碼的共享件程序,所以在 Linux 平臺上幾乎不存在與其功能匹配的工具,這使得 .arj
文件使用起來相當(dāng)困難。
對于 ARJ 文件,只要能成功地解壓縮就已經(jīng)夠幸運的了。不可能在 Linux 上進行 .arj
形式的壓縮,因為沒有用于 Linux 的、生成這種文件的本機壓縮工具。(可以嘗試在 DOSEMU 或 VMware 下運行原始 ARJ 軟件,但這根本算不上是一種易于使用的解決方案)。
要解壓縮 .arj
文件,使用 unarj
實用程序。它比 ARJ 慢,能力也不如 ARJ,但至少它能夠順利地抽取大多數(shù) .arj
文件。它只能將文件抽取到當(dāng)前的工作目錄、列出檔案內(nèi)容,或者測試檔案。
要查看簡短的幫助頁面,輸入 unarj
;如需較詳細的描述,請參閱 unarj.doc
文件,通常它位于 /usr/doc/unarj-2.43
目錄中。
盡管在哪里解壓縮 .arj
文件是由您來選擇的,但為避免把主工作目錄混淆,通常應(yīng)該在主目錄中創(chuàng)建一個臨時子目錄,將當(dāng)前工作目錄更改到新目錄,將壓縮的文件移到新目錄中,然后使用 unarj e archive.arj
來解壓縮有問題的文件。
用于 Linux 的 unarj
只能一次抽取所有文件;不能從檔案中抽取個別文件。至少如果文件已存在于當(dāng)前的工作目錄中,即使在檔案中找到具有相同名稱的文件,您也不會覆蓋其內(nèi)容。另外, unarj
不支持空目錄或自抽取檔案;后者是 MS-DOS/Windows 程序,它們無法在 Linux 上運行,但可以在 DOSEMU 或 VMware 下運行。
以下是其它一些 unarj
選項:
unarj archive.arj
或 unarj l archive.arj
-- 列出檔案內(nèi)容
unarj t archive.arj
-- 測試檔案
unarj x archive.arj
-- 帶路徑名抽取文件
請注意, unarj
選項不是以減號 ( -
) 開頭的。
如果 unarj
解壓縮文件失敗,嘗試使用 Aladdin Expander for Linux(有關(guān)詳細信息,請參閱有關(guān) .sit
的那一節(jié))。您還可以讓創(chuàng)建檔案的人使用其它工具(例如可用于 MS-DOS 的免費 gzip)來壓縮它。您可能還需要一個 simple.arj
檔案,在其中要避免使用所有高級 ARJ 選項,例如卷、將檔案分成幾個小部分、以及自抽取。
為什么不使用自抽取 ARJ 檔案呢?這些是不能在 Linux 下運行的 MS-DOS 樣式的可執(zhí)行文件;它們使用不同的系統(tǒng)庫,它們的內(nèi)部格式也與 Linux 所需的二進制可執(zhí)行文件的格式不同。可能可以在 DOSEMU 或 VMware 下運行自抽取 ARJ 檔案。
以 ARJ 或 JAR 形式進行的壓縮仍然不能在 Linux 上使用,按照 ARJ Software 的 FAQ 頁面的說法,我們不應(yīng)該等待 Linux 移植。如果您知道有任何 Linux 工具可以解壓縮 .jar
文件,請務(wù)必告訴我。
可以從 ARJ Software 的站點或攜帶您所需 Linux 發(fā)行版的 FTP 服務(wù)器上下載 unarj 源碼。另外,unarj 通常是基本 Linux 發(fā)行版的一部分,因此可以在主要分發(fā) CD-ROM 上找到它。如需到所有 Linux 發(fā)行版的鏈接的列表,請參閱 Linux 發(fā)行版頁面。
ARJ 軟件: http://www.arjsoft.com
ARJ 的 FAQ 頁面: http://www.arjsoft.com/faq.htm
ARJ 的下載頁面: http://www.arjsoft.com/files.htm
DOSEMU: http://www.dosemu.org
VMware: http://www.vmware.com
Aladdin Expander: http://www.aladdinsys.com/expander/expander_linux_login.html
gzip: http://www.gnu.org/software/gzip/gzip.html
Linux 發(fā)行版頁面: http://www.linux.org/dist/index.html
返回到索引
.lzh (.lha)
帶有 .lzh
或 .lha
擴展名的文件使用的是 LHa、LHarc 或 LHx 壓縮實用程序進行的壓縮。這些實用程序是由 Y. Tagawa、H. Yoshizaki、Momozou 和 Masaru Oki 開發(fā)的。這些實用程序已移植到許多操作系統(tǒng),使用它們所創(chuàng)建的文件也具有相當(dāng)?shù)目梢浦残浴ats Andersson 執(zhí)行了 Linux 移植。
與 gzip 不同, lha
實用程序執(zhí)行多個文件的壓縮。要壓縮單個文件,輸入 lha a archive file
。 lha
創(chuàng)建的檔案帶有 .lzh
擴展名。如果 archive.lzh
已在當(dāng)前的工作目錄中存在,那么您讓 lha
壓縮的文件就將添加到這一現(xiàn)有的檔案中。 archive.lzh
先前的內(nèi)容仍被保留,除非它已包含帶有相同名稱的文件,在這種情況下,舊文件將被新文件取代。該操作是 盲目的, 意味著它不檢查文件的時間戳記;要確保只有帶有更新時間戳記的文件才能替換檔案中已保存的較舊的文件,這時使用 u
選項而不是 a
選項(例如, lha u archive file
)。
當(dāng)收到 .lzh
文件的人抱怨無法解壓縮檔案時,嘗試使用 lha ag archive file
或 lha ao archive file
。 g
和 o
選項分別指示 lha
使用常規(guī)或與 lha
兼容的歸檔方法。如果您只更新現(xiàn)有的檔案,使用 u
而不是 a
。
歸檔多個文件和歸檔單個文件一樣容易:使用通配符(例如, lha a archive files*
)或輸入存儲文件所在的頂級目錄(例如, lha a archive directory
)。所有文件和子目錄都將自動存儲在檔案中。文件替換規(guī)則和 u
選項對多個文件和單個文件所起的作用是一樣的。通配符使用的語法和您在常用的 shell 中所使用的語法相同。
以下是其它一些 lha
選項:
l
-- 列出檔案內(nèi)容(例如, lha l archive.lzh
)
v
-- 列出詳細格式的檔案內(nèi)容(例如, lha v archive.lzh
)
t
-- 測試檔案的完整性(例如, lha t archive.lzh
)
請注意, lha
選項不必以負號 ( -
) 開頭,它們之間也不應(yīng)該有空格。如需其它選項的列表,請輸入 lha
。
.lzh
和 .lha
文件的解壓縮相當(dāng)容易:只需輸入 lha e archive.lha
。如果希望將文件解壓縮到不是當(dāng)前工作目錄的目錄中,輸入 lha ew=path archive.lha
。
也可以使用 lha w=path -e archive.lzh
將檔案的內(nèi)容抽取到由 path
指定的目錄中。 lha -ie archive.lzh
將抽取檔案內(nèi)容,但忽略存儲在其中的目錄路徑。
lha
的源碼和二進制版本可以從攜帶您所需 Linux 發(fā)行版的服務(wù)器上免費獲得。如需到所有 Linux 發(fā)行版的鏈接的列表,請參閱 Linux 發(fā)行版頁面。
Linux 發(fā)行版頁面: http://www.linux.org/dist/index.html
gzip: http://www.gnu.org/software/gzip/gzip.html
返回到索引
.rar
帶有 .rar
文件擴展名的文件是使用 RAR 和 WinRAR 歸檔和壓縮工具創(chuàng)建的,這些工具由 Eugene Roshal 開發(fā)。他先是發(fā)行了用于 MS-DOS 操作系統(tǒng)的這些工具。RAR 受到用戶的青睞是因為他們看重它的廣泛特性和高壓縮比率,以及友好的用戶界面,它與 Norton Commander 的界面(或 Midnight Commander 的界面)很相似。
因為 RAR For Linux 是該軟件的完整移植,因此您可以享受到原始 RAR 的所有好處(除 MC 樣式的界面以外)。但要記住,RAR for Linux 不是免費的;必須向總部在芬蘭的一家公司 T:mi Softronic 注冊它。
RAR for Linux 選項的列表給人的印象深刻,可以用作其它歸檔和壓縮工具開發(fā)人員的任務(wù)列表。要壓縮單個文件,輸入 rar a archive file
。 .rar
擴展名將自動附加到檔案后(它的完整文件名將是 archive.rar
)。如果 archive.rar
已在當(dāng)前工作目錄中存在,您嘗試添加到 archive.rar
的文件就將直接添加到現(xiàn)有檔案中。只有在 archive.rar
已包含帶有相同名稱的文件時,舊文件才會被新文件替代。其它存儲在檔案內(nèi)部的文件將保持不變。請記住,該操作是 盲目的, 意味著 RAR 不檢查文件的時間戳記;只有在 a
選項后添加了 -u
選項時才執(zhí)行這一檢查。請注意, a
前面沒有減號 ( -
)(例如, rar a -u archive file
)。
多個文件的歸檔非常簡單:要將當(dāng)前工作目錄中的所有文件和目錄歸檔,輸入 rar a archive
。要將特定目錄的內(nèi)容歸檔,輸入 rar a archive /path/to/directory
。要將一組文件歸檔,將它們括在引號中,象這樣: rar a archive '*.cpp'
。
文件替換規(guī)則和 -u
選項對多個文件和單個文件所起的作用是一樣的。通配符使用的語法和您在常用的 shell 中所使用的語法相同,但必須記住要用引號括起它們。
以下是其它一些 RAR 選項:
l
-- 列出檔案內(nèi)容(例如, rar l archive.rar
)
v
-- 列出詳細格式的檔案內(nèi)容(例如, rar v archive.rar
)
t
-- 測試檔案的完整性(例如, rar t archive.rar
)
請注意,不是所有 RAR 選項都以減號 ( -
) 開頭;有關(guān)詳細信息,請運行不帶任何選項和自變量的 RAR(例如,如果 RAR 目錄位于當(dāng)前工作目錄中,運行 rar/rar
)。有關(guān)詳細信息,請參閱 RAR 手冊文件(它是 rar.txt
文件,同樣位于 RAR 目錄中)。
使用 RAR,您可以解壓縮整個檔案(使用 rar e archive.rar
)、單個文件(使用 rar e archive.rar file
)或一組文件(使用 rar e archive.rar '*.cpp'
)。因為 RAR 可以對多個文件使用,您也可以使用 rar e '*.rar' '*.cpp'
從多個檔案中抽取幾組文件。
當(dāng) RAR 無法從一個檔案中抽取文件時,使用修復(fù)選項進行挽救: rar r archive.rar
。
可以從官方 RAR 站點獲得自抽取檔案形式的 RAR for Linux。需要使用 ./rarlnx271.sfx
命令來運行它(結(jié)尾的數(shù)字可能會因為發(fā)行了新版本的 RAR 而有所不同)。檔案將其內(nèi)容解包到當(dāng)前工作目錄中自動創(chuàng)建的 rar
子目錄中。您可以在其中找到 rar
二進制。可以將 rar
二進制移到 /sbin
或 /usr/sbin
目錄中,這樣所有用戶都可以使用它。除了 RAR 本身,您還可以獲得 UnRAR,它是一個小型實用程序,用于解壓縮 .rar
文件,如果您希望允許其它用戶打開這樣的檔案但不創(chuàng)建它們,這個實用程序使用起來非常方便。
RAR 站點: http://www.rarsoft.com
返回到索引
.sit
使用 Aladdin Systems 所開發(fā)的、用于 Mac OS 的 StuffIt 歸檔程序創(chuàng)建的檔案通常帶有 .sit
擴展名。這些文件還可以有其它的如 .hqx
或 .bin
這樣的擴展名,表明它們曾使用 BinHex 或 MacBinary 實用程序處理過,來創(chuàng)建可以在計算機網(wǎng)絡(luò)上以電子方式傳送的單個文本文件或二進制文件。(Macintosh 文件通常有兩部分,稱為 創(chuàng)建子進程, 必須在傳送之前將它們聯(lián)接在一起,以確保它們作為一個整體傳送。)可以使用組成 macutil
軟件包的一些實用程序來處理這樣編碼的文件,它是免費的,可用于所有正式的 Linux 發(fā)行版)。
因為 Aladdin Systems 控制著 StuffIt 的源代碼,在收到 .sit
文件時唯一的選擇是使用 Aladdin Expander for Linux,它當(dāng)前還處于 Beta 階段(但已相當(dāng)合用)。Aladdin Systems 已將這一 beta 版作為免費軟件向公眾提供:您不必為它付錢,但也無法獲得源代碼。當(dāng)前沒有用于 Linux 的、創(chuàng)建 .sit
檔案的工具。
要解壓縮 .sit
檔案,輸入 unstuff archive.sit
。如果不使用 -d
選項,抽取出的文件將放在當(dāng)前工作目錄下,該選項可以讓您指定目標(biāo)目錄: unstuff -d=/home/james/oldmacfiles archive.sit
。如果解包的文件是受密碼保護的,使用 -p
選項: unstuff -p=secret archive.sit
。文本文件轉(zhuǎn)換 filer 選項用于處理行結(jié)束字符的轉(zhuǎn)換,將 LF 轉(zhuǎn)換成 CRLF,然后再轉(zhuǎn)換回來: unstuff-text=auto -eol=unix archive.sit
。
可以在 Expander 的 man page 上找到有關(guān)它的詳細信息(輸入 man unstuff
顯示它)。
Aladdin Expander for Linux 可以從 Aladdin Systems 網(wǎng)站上獲得。使用或下載它不用付任何費用,但必須向 Aladdin Systems 注冊。有兩個版本的 Expander,一個用于基于 RPM 的系統(tǒng)(Red Hat、Mandrake、SuSE 等),另一個用于基于 .deb 的系統(tǒng)(Debian、Corel 等)。沒有特定于 Slackware 的軟件包,但要轉(zhuǎn)換 RPM 包以在 Slackware 上使用它應(yīng)該并不困難。
Aladdin Systems: http://www.aladdinsys.com
Linux 發(fā)行版頁面: http://www.linux.org/dist/index.html
macutil
軟件包: http://www.linux.org/dist/index.html
Aladdin Expander for Linux: http://www.aladdinsys.com/expander/expander_linux_login.html
返回到索引
.zip
.zip
擴展名表示文件是使用許多 zip 歸檔程序和壓縮程序之一(但不是 gzip)創(chuàng)建的。因為這是一種非常流行的壓縮格式,算法的詳細描述也有很多,所以可以找到用于所有操作系統(tǒng)的有用的移植形式。這包括創(chuàng)建和擴展帶有 .zip
文件擴展名的檔案的壓縮和解壓縮實用程序。在 Linux 上有兩種這樣的工具:免費的 Info-ZIP 和以贏利為目的的 PKZIP for Linux。如果您只是偶爾需要創(chuàng)建或打開 zip 文件,使用 Info-ZIP。如果希望使用在 MS-DOS 或其它系統(tǒng)上使用的相同工具,請選擇 PKZIP(PKZIP 可用于許多操作系統(tǒng))。用于微軟 Windows 的 WinZIP 和用于 Mac OS 的 Stufflt 這兩種實用程序可以創(chuàng)建和打開相互之間兼容的檔案。
Info-ZIP 在無法使用 gzip 或 tar 的情況下可以提供壓縮和解壓縮的一個不錯的選擇,這或許是在 Linux、微軟 Windows 和 Mac OS 用戶之間交換壓縮文件的一種最好的形式。有許多不錯的 zip 程序(有開放源碼的,也有商業(yè)的)可用于這些操作系統(tǒng),它們應(yīng)該能確保文件的順利交換(當(dāng)然,只要是在特定于某個特定工具的特殊功能關(guān)閉的情況下)。
要歸檔單個文件,輸入 zip archive file
。要壓縮多個文件,使用通配符(例如, zip archive picture*jpg
)。還有可能將文件定向輸出到 zip;輸入 man zip
獲得詳細信息。要歸檔整個目錄,包括其中所有子目錄的內(nèi)容,使用 -r
選項,然后在檔案名后輸入目錄名(例如, zip -r archive directory
)。還可以輸入 zip -R archive .
來將當(dāng)前當(dāng)前工作目錄進行歸檔。 .zip
擴展名自動添加到檔案名后。
當(dāng) zip
發(fā)現(xiàn)已有檔案的名稱和您嘗試創(chuàng)建的名稱相同時,它將您希望壓縮的文件添加到現(xiàn)有檔案中,而不將已存在的文件除去。這一規(guī)則有一個例外:如果存儲在現(xiàn)有檔案中的一個或多個文件和您希望壓縮的一個或多個文件具有相同的名稱,舊文件將由新文件替換。文件替換規(guī)則可以使用 -u
選項來修改(有關(guān)詳細信息,請參閱 man zip
)。
以下是其它一些 zip 選項:
-j
-- 只存儲文件名,不帶訪問路徑(例如, zip -j archive file
)
-t
-- 測試檔案的完整性(例如, zip -t archive.zip
)
-x
-- 排除文件(例如, zip -r archive ./* -x *.tmp
)
請注意,不是所有 zip 選項都以負號 ( -
) 開頭。
PKZIP 選項類似于 Info-ZIP,但您應(yīng)該閱讀 pkzip.htm
手冊(它是一個 HTML 文檔;使用 lynx pkzip.htm
或 netscape pkzip.htm
閱讀)來確保您的操作正確。
要解壓縮 zip 文件,使用 unzip archive.zip
命令。如果想指定將檔案擴展到哪個目錄中,可以使用 -d
選項(例如, unzip file.zip -d /home/james/zips
將 file.zip
的內(nèi)容抽取到 /home/james/zips
目錄中)。
注:Aladdin Expander for Linux 也可以解壓縮 zip 文件。有關(guān)詳細信息,請參閱有關(guān) .sit 文件的那一節(jié)。
當(dāng) zip 無法抽取檔案中的文件時,使用 -F
或 -FF
修復(fù) zip 選項進行挽救(例如 zip -F archive.zip
或 zip -FF archive.zip
)。請記住在嘗試拯救已破壞的檔案之前進行備份。
可以從官方 Info-ZIP 站點獲得二進制或源碼形式的 Info-ZIP for Linux。
可以從 PKZIP 官方站點下載 PKZIP for Linux。它作為自抽取檔案分發(fā)。要為它解包,輸入 ./pklin251.exe
,檔案的內(nèi)容將解包到當(dāng)前工作目錄中。您需要將 pkzip25
二進制文件復(fù)制到 /sbin
或 /usr/sbin
目錄中,這樣系統(tǒng)上的所有用戶都可以使用它。(但您必須購買相應(yīng)的許可證,因為它是商業(yè)軟件包。)
gzip: http://www.gnu.org/software/gzip/gzip.html
tar: http://www.gnu.org/software/tar/tar.html
WinZIP: http://www.winzip.com
StuffIt: http://www.aladdinsys.com
Aladdin Expander: http://www.aladdinsys.com/expander/expander_linux_login.html
下載源碼形式的 Info-ZIP: http://www.freesoftware.com/pub/infozip
下載二進制形式的 Info-ZIP: http://www.linux.org/dist/index.html
下載 PKZIP: http://www.pkzip.org/shareware/pkzip_unix.html
返回到索引
.zoo
.zoo
擴展名在因特網(wǎng)上不經(jīng)常出現(xiàn),但請放心,可以使用 Linux 的 zoo
實用程序打開和創(chuàng)建這樣的文件。不過要記住,zoo 對于現(xiàn)在用戶的期望來說已有些陳舊和簡單。
要歸檔單個文件,輸入 zoo a archive file
。同樣,要壓縮多個文件,可以使用通配符 -- 例如, zoo a archive picture*jpg
。 .zip
擴展名自動添加到檔案名后。
下面是其它一些 zoo 選項以及它們所添加的功能:
l
-- 列出檔案內(nèi)容(例如, zoo l archive.zoo
)
t
-- 測試檔案的完整性(例如, zoo -t archive.zoo
)
請注意,不是所有 zoo 選項都以負號 ( -
) 開頭
要解壓縮 .zoo
文件,輸入 zoo e archive.zoo
。
可以獲得用于所有 Linux 發(fā)行版的二進制形式的 zoo for Linux。
下載二進制形式的 zoo: http://www.linux.org/dist/index.html
返回到索引
參考資料
posted on 2005-09-20 17:07
Sung 閱讀(265)
評論(0) 編輯 收藏 所屬分類:
Linux