Sung in Blog

                     一些技術文章 & 一些生活雜碎

          文件的壓縮和解壓縮是計算歷史上最有用的創造之一,但缺乏可移植性和開放工具是阻礙它發揮其應有作用的最主要的一個障礙。只要我們是與其他使用類似 Unix 操作系統的用戶交換文件,就可以使用例如 compress 、gzip 和 bzip2 這樣的可移植工具(如需鏈接,請參閱 參考資料 )。但世界上其他人使用的是各種各樣的專用軟件 -- 甚至專用壓縮算法 -- 擁有者可能永遠也不會將它們公之于眾。

          這種事態發展下去會很危險。想象一下,將來我們可能無法對檔案的重要部分譯碼,原因是我們創建它們時使用的是專用工具和算法,而那些工具運行所在的操作系統和硬件已逐漸過時,消失不見。這就是為什么我們應該使用開放源碼壓縮工具,或者至少使用免費和有完善記載算法的商業壓縮工具的原因。(只是要記住避免使用任何特殊的增強。)

          本文是有關在 Linux 操作系統上使用 .arc.arj.lzh ( .lha )、 .rar.sit.zip.zoo 文件的指南。我選擇討論這些特殊的格式是因為三種最流行的操作系統 (MS-DOS、微軟 Windows 和 Mac OS)的用戶最常使用它們。我之所以寫這篇指南是希望引導大家快速找出正確的工具,而不是詳細地從技術上討論文件壓縮技術。

          最后,我想簡短說明一下自抽取文件。這樣的檔案往往位于包含壓縮格式數據的現實程序中。執行它們時,它們會解包,并將存儲在程序主體內的數據復制到您指定的任何驅動器上。唯一的問題是它們無法在 Linux 上使用,沒有工具可以抽取它們。在這種情況下,需要讓創建檔案的那個人將它作為一個一般檔案壓縮。

          目前先說到這里。我希望這個指南能對您有所幫助,并期待著您的意見和建議。

          索引

          .arc
          帶有 .arc 擴展名的文件相對來說比較少見。如果您偶然碰到一個,基本上可以認定它是使用舊的 MS-DOS SAE ARC 或 PKware PKARC 歸檔實用程序創建的。這種形式在 Linux 上的支持性不是太好,并很難指望在 Linux 機器上對這些文件解壓縮。如果需要創建 .arc 文件,嘗試在 DOSEMU 或 VMware 下運行原始 SAE ARC 或 PKware PKARC(在攜帶 MS-DOS 實用程序的 FTP 服務器上查找它們)。

          要解壓縮 .arc 文件,使用 Aladdin Expander for Linux。寫這篇文章的時候,Aladdin Expander 可以為公眾 Beta 測試目的免費獲得;它是否繼續免費還是個未知問題。

          要解壓縮 .arc 文件,輸入 unstuff file.arc-d 是個有用的選項,指定解壓縮文件的目標位置。例如: unstuff -d=./home/james/incoming file.arc

          注:要了解更多有關 Aladdin Expander for Linux 的詳細信息,請閱讀有關 .sit文件的那一節。

          VMware: http://www.vmware.com

          DOSEMU: http://www.dosemu.org

          Aladdin 系統: http://www.aladdinsys.com/expander/expander_linux_login.html

          返回到索引

          .arj
          帶有 .arj 擴展名的文件是使用 ARJ Software 用于 MS-DOS 和 Windows 的 ARJ 實用程序創建的。因為 ARJ 是一種不能免費獲得源代碼的共享件程序,所以在 Linux 平臺上幾乎不存在與其功能匹配的工具,這使得 .arj 文件使用起來相當困難。

          對于 ARJ 文件,只要能成功地解壓縮就已經夠幸運的了。不可能在 Linux 上進行 .arj 形式的壓縮,因為沒有用于 Linux 的、生成這種文件的本機壓縮工具。(可以嘗試在 DOSEMU 或 VMware 下運行原始 ARJ 軟件,但這根本算不上是一種易于使用的解決方案)。

          要解壓縮 .arj 文件,使用 unarj 實用程序。它比 ARJ 慢,能力也不如 ARJ,但至少它能夠順利地抽取大多數 .arj 文件。它只能將文件抽取到當前的工作目錄、列出檔案內容,或者測試檔案。

          要查看簡短的幫助頁面,輸入 unarj ;如需較詳細的描述,請參閱 unarj.doc 文件,通常它位于 /usr/doc/unarj-2.43 目錄中。

          盡管在哪里解壓縮 .arj 文件是由您來選擇的,但為避免把主工作目錄混淆,通常應該在主目錄中創建一個臨時子目錄,將當前工作目錄更改到新目錄,將壓縮的文件移到新目錄中,然后使用 unarj e archive.arj 來解壓縮有問題的文件。

          用于 Linux 的 unarj 只能一次抽取所有文件;不能從檔案中抽取個別文件。至少如果文件已存在于當前的工作目錄中,即使在檔案中找到具有相同名稱的文件,您也不會覆蓋其內容。另外, unarj 不支持空目錄或自抽取檔案;后者是 MS-DOS/Windows 程序,它們無法在 Linux 上運行,但可以在 DOSEMU 或 VMware 下運行。

          以下是其它一些 unarj 選項:

          • unarj archive.arjunarj l archive.arj -- 列出檔案內容
          • unarj t archive.arj -- 測試檔案
          • unarj x archive.arj -- 帶路徑名抽取文件

          請注意, unarj 選項不是以減號 ( - ) 開頭的。

          如果 unarj 解壓縮文件失敗,嘗試使用 Aladdin Expander for Linux(有關詳細信息,請參閱有關 .sit 的那一節)。您還可以讓創建檔案的人使用其它工具(例如可用于 MS-DOS 的免費 gzip)來壓縮它。您可能還需要一個 simple.arj 檔案,在其中要避免使用所有高級 ARJ 選項,例如卷、將檔案分成幾個小部分、以及自抽取。

          為什么不使用自抽取 ARJ 檔案呢?這些是不能在 Linux 下運行的 MS-DOS 樣式的可執行文件;它們使用不同的系統庫,它們的內部格式也與 Linux 所需的二進制可執行文件的格式不同。可能可以在 DOSEMU 或 VMware 下運行自抽取 ARJ 檔案。

          以 ARJ 或 JAR 形式進行的壓縮仍然不能在 Linux 上使用,按照 ARJ Software 的 FAQ 頁面的說法,我們不應該等待 Linux 移植。如果您知道有任何 Linux 工具可以解壓縮 .jar 文件,請務必告訴我。

          可以從 ARJ Software 的站點或攜帶您所需 Linux 發行版的 FTP 服務器上下載 unarj 源碼。另外,unarj 通常是基本 Linux 發行版的一部分,因此可以在主要分發 CD-ROM 上找到它。如需到所有 Linux 發行版的鏈接的列表,請參閱 Linux 發行版頁面。

          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 發行版頁面: http://www.linux.org/dist/index.html

          返回到索引

          .lzh (.lha)
          帶有 .lzh.lha 擴展名的文件使用的是 LHa、LHarc 或 LHx 壓縮實用程序進行的壓縮。這些實用程序是由 Y. Tagawa、H. Yoshizaki、Momozou 和 Masaru Oki 開發的。這些實用程序已移植到許多操作系統,使用它們所創建的文件也具有相當的可移植性。Mats Andersson 執行了 Linux 移植。

          與 gzip 不同, lha 實用程序執行多個文件的壓縮。要壓縮單個文件,輸入 lha a archive filelha 創建的檔案帶有 .lzh 擴展名。如果 archive.lzh 已在當前的工作目錄中存在,那么您讓 lha 壓縮的文件就將添加到這一現有的檔案中。 archive.lzh 先前的內容仍被保留,除非它已包含帶有相同名稱的文件,在這種情況下,舊文件將被新文件取代。該操作是 盲目的, 意味著它不檢查文件的時間戳記;要確保只有帶有更新時間戳記的文件才能替換檔案中已保存的較舊的文件,這時使用 u 選項而不是 a 選項(例如, lha u archive file )。

          當收到 .lzh 文件的人抱怨無法解壓縮檔案時,嘗試使用 lha ag archive filelha ao archive filego 選項分別指示 lha 使用常規或與 lha 兼容的歸檔方法。如果您只更新現有的檔案,使用 u 而不是 a

          歸檔多個文件和歸檔單個文件一樣容易:使用通配符(例如, lha a archive files* )或輸入存儲文件所在的頂級目錄(例如, lha a archive directory )。所有文件和子目錄都將自動存儲在檔案中。文件替換規則和 u 選項對多個文件和單個文件所起的作用是一樣的。通配符使用的語法和您在常用的 shell 中所使用的語法相同。

          以下是其它一些 lha 選項:

          • l -- 列出檔案內容(例如, lha l archive.lzh
          • v -- 列出詳細格式的檔案內容(例如, lha v archive.lzh
          • t -- 測試檔案的完整性(例如, lha t archive.lzh

          請注意, lha 選項不必以負號 ( - ) 開頭,它們之間也不應該有空格。如需其它選項的列表,請輸入 lha

          .lzh.lha 文件的解壓縮相當容易:只需輸入 lha e archive.lha 。如果希望將文件解壓縮到不是當前工作目錄的目錄中,輸入 lha ew=path archive.lha

          也可以使用 lha w=path -e archive.lzh 將檔案的內容抽取到由 path 指定的目錄中。 lha -ie archive.lzh 將抽取檔案內容,但忽略存儲在其中的目錄路徑。

          lha 的源碼和二進制版本可以從攜帶您所需 Linux 發行版的服務器上免費獲得。如需到所有 Linux 發行版的鏈接的列表,請參閱 Linux 發行版頁面。

          Linux 發行版頁面: http://www.linux.org/dist/index.html

          gzip: http://www.gnu.org/software/gzip/gzip.html

          返回到索引

          .rar
          帶有 .rar 文件擴展名的文件是使用 RAR 和 WinRAR 歸檔和壓縮工具創建的,這些工具由 Eugene Roshal 開發。他先是發行了用于 MS-DOS 操作系統的這些工具。RAR 受到用戶的青睞是因為他們看重它的廣泛特性和高壓縮比率,以及友好的用戶界面,它與 Norton Commander 的界面(或 Midnight Commander 的界面)很相似。

          因為 RAR For Linux 是該軟件的完整移植,因此您可以享受到原始 RAR 的所有好處(除 MC 樣式的界面以外)。但要記住,RAR for Linux 不是免費的;必須向總部在芬蘭的一家公司 T:mi Softronic 注冊它。

          RAR for Linux 選項的列表給人的印象深刻,可以用作其它歸檔和壓縮工具開發人員的任務列表。要壓縮單個文件,輸入 rar a archive file.rar 擴展名將自動附加到檔案后(它的完整文件名將是 archive.rar )。如果 archive.rar 已在當前工作目錄中存在,您嘗試添加到 archive.rar 的文件就將直接添加到現有檔案中。只有在 archive.rar 已包含帶有相同名稱的文件時,舊文件才會被新文件替代。其它存儲在檔案內部的文件將保持不變。請記住,該操作是 盲目的, 意味著 RAR 不檢查文件的時間戳記;只有在 a 選項后添加了 -u 選項時才執行這一檢查。請注意, a 前面沒有減號 ( - )(例如, rar a -u archive file )。

          多個文件的歸檔非常簡單:要將當前工作目錄中的所有文件和目錄歸檔,輸入 rar a archive 。要將特定目錄的內容歸檔,輸入 rar a archive /path/to/directory 。要將一組文件歸檔,將它們括在引號中,象這樣: rar a archive '*.cpp'

          文件替換規則和 -u 選項對多個文件和單個文件所起的作用是一樣的。通配符使用的語法和您在常用的 shell 中所使用的語法相同,但必須記住要用引號括起它們。

          以下是其它一些 RAR 選項:

          • l -- 列出檔案內容(例如, rar l archive.rar
          • v -- 列出詳細格式的檔案內容(例如, rar v archive.rar
          • t -- 測試檔案的完整性(例如, rar t archive.rar

          請注意,不是所有 RAR 選項都以減號 ( - ) 開頭;有關詳細信息,請運行不帶任何選項和自變量的 RAR(例如,如果 RAR 目錄位于當前工作目錄中,運行 rar/rar )。有關詳細信息,請參閱 RAR 手冊文件(它是 rar.txt 文件,同樣位于 RAR 目錄中)。

          使用 RAR,您可以解壓縮整個檔案(使用 rar e archive.rar )、單個文件(使用 rar e archive.rar file )或一組文件(使用 rar e archive.rar '*.cpp' )。因為 RAR 可以對多個文件使用,您也可以使用 rar e '*.rar' '*.cpp' 從多個檔案中抽取幾組文件。

          當 RAR 無法從一個檔案中抽取文件時,使用修復選項進行挽救: rar r archive.rar

          可以從官方 RAR 站點獲得自抽取檔案形式的 RAR for Linux。需要使用 ./rarlnx271.sfx 命令來運行它(結尾的數字可能會因為發行了新版本的 RAR 而有所不同)。檔案將其內容解包到當前工作目錄中自動創建的 rar 子目錄中。您可以在其中找到 rar 二進制。可以將 rar 二進制移到 /sbin/usr/sbin 目錄中,這樣所有用戶都可以使用它。除了 RAR 本身,您還可以獲得 UnRAR,它是一個小型實用程序,用于解壓縮 .rar 文件,如果您希望允許其它用戶打開這樣的檔案但不創建它們,這個實用程序使用起來非常方便。

          RAR 站點: http://www.rarsoft.com

          返回到索引

          .sit
          使用 Aladdin Systems 所開發的、用于 Mac OS 的 StuffIt 歸檔程序創建的檔案通常帶有 .sit 擴展名。這些文件還可以有其它的如 .hqx.bin 這樣的擴展名,表明它們曾使用 BinHex 或 MacBinary 實用程序處理過,來創建可以在計算機網絡上以電子方式傳送的單個文本文件或二進制文件。(Macintosh 文件通常有兩部分,稱為 創建子進程, 必須在傳送之前將它們聯接在一起,以確保它們作為一個整體傳送。)可以使用組成 macutil 軟件包的一些實用程序來處理這樣編碼的文件,它是免費的,可用于所有正式的 Linux 發行版)。

          因為 Aladdin Systems 控制著 StuffIt 的源代碼,在收到 .sit 文件時唯一的選擇是使用 Aladdin Expander for Linux,它當前還處于 Beta 階段(但已相當合用)。Aladdin Systems 已將這一 beta 版作為免費軟件向公眾提供:您不必為它付錢,但也無法獲得源代碼。當前沒有用于 Linux 的、創建 .sit 檔案的工具。

          要解壓縮 .sit 檔案,輸入 unstuff archive.sit 。如果不使用 -d 選項,抽取出的文件將放在當前工作目錄下,該選項可以讓您指定目標目錄: unstuff -d=/home/james/oldmacfiles archive.sit 。如果解包的文件是受密碼保護的,使用 -p 選項: unstuff -p=secret archive.sit 。文本文件轉換 filer 選項用于處理行結束字符的轉換,將 LF 轉換成 CRLF,然后再轉換回來: unstuff-text=auto -eol=unix archive.sit

          可以在 Expander 的 man page 上找到有關它的詳細信息(輸入 man unstuff 顯示它)。

          Aladdin Expander for Linux 可以從 Aladdin Systems 網站上獲得。使用或下載它不用付任何費用,但必須向 Aladdin Systems 注冊。有兩個版本的 Expander,一個用于基于 RPM 的系統(Red Hat、Mandrake、SuSE 等),另一個用于基于 .deb 的系統(Debian、Corel 等)。沒有特定于 Slackware 的軟件包,但要轉換 RPM 包以在 Slackware 上使用它應該并不困難。

          Aladdin Systems: http://www.aladdinsys.com

          Linux 發行版頁面: 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)創建的。因為這是一種非常流行的壓縮格式,算法的詳細描述也有很多,所以可以找到用于所有操作系統的有用的移植形式。這包括創建和擴展帶有 .zip 文件擴展名的檔案的壓縮和解壓縮實用程序。在 Linux 上有兩種這樣的工具:免費的 Info-ZIP 和以贏利為目的的 PKZIP for Linux。如果您只是偶爾需要創建或打開 zip 文件,使用 Info-ZIP。如果希望使用在 MS-DOS 或其它系統上使用的相同工具,請選擇 PKZIP(PKZIP 可用于許多操作系統)。用于微軟 Windows 的 WinZIP 和用于 Mac OS 的 Stufflt 這兩種實用程序可以創建和打開相互之間兼容的檔案。

          Info-ZIP 在無法使用 gzip 或 tar 的情況下可以提供壓縮和解壓縮的一個不錯的選擇,這或許是在 Linux、微軟 Windows 和 Mac OS 用戶之間交換壓縮文件的一種最好的形式。有許多不錯的 zip 程序(有開放源碼的,也有商業的)可用于這些操作系統,它們應該能確保文件的順利交換(當然,只要是在特定于某個特定工具的特殊功能關閉的情況下)。

          要歸檔單個文件,輸入 zip archive file 。要壓縮多個文件,使用通配符(例如, zip archive picture*jpg )。還有可能將文件定向輸出到 zip;輸入 man zip 獲得詳細信息。要歸檔整個目錄,包括其中所有子目錄的內容,使用 -r 選項,然后在檔案名后輸入目錄名(例如, zip -r archive directory )。還可以輸入 zip -R archive . 來將當前當前工作目錄進行歸檔。 .zip 擴展名自動添加到檔案名后。

          zip 發現已有檔案的名稱和您嘗試創建的名稱相同時,它將您希望壓縮的文件添加到現有檔案中,而不將已存在的文件除去。這一規則有一個例外:如果存儲在現有檔案中的一個或多個文件和您希望壓縮的一個或多個文件具有相同的名稱,舊文件將由新文件替換。文件替換規則可以使用 -u 選項來修改(有關詳細信息,請參閱 man zip )。

          以下是其它一些 zip 選項:

          • -j -- 只存儲文件名,不帶訪問路徑(例如, zip -j archive file
          • -t -- 測試檔案的完整性(例如, zip -t archive.zip
          • -x -- 排除文件(例如, zip -r archive ./* -x *.tmp

          請注意,不是所有 zip 選項都以負號 ( - ) 開頭。

          PKZIP 選項類似于 Info-ZIP,但您應該閱讀 pkzip.htm 手冊(它是一個 HTML 文檔;使用 lynx pkzip.htmnetscape pkzip.htm 閱讀)來確保您的操作正確。

          要解壓縮 zip 文件,使用 unzip archive.zip 命令。如果想指定將檔案擴展到哪個目錄中,可以使用 -d 選項(例如, unzip file.zip -d /home/james/zipsfile.zip 的內容抽取到 /home/james/zips 目錄中)。

          注:Aladdin Expander for Linux 也可以解壓縮 zip 文件。有關詳細信息,請參閱有關 .sit 文件的那一節。

          當 zip 無法抽取檔案中的文件時,使用 -F-FF 修復 zip 選項進行挽救(例如 zip -F archive.zipzip -FF archive.zip )。請記住在嘗試拯救已破壞的檔案之前進行備份。

          可以從官方 Info-ZIP 站點獲得二進制或源碼形式的 Info-ZIP for Linux。

          可以從 PKZIP 官方站點下載 PKZIP for Linux。它作為自抽取檔案分發。要為它解包,輸入 ./pklin251.exe ,檔案的內容將解包到當前工作目錄中。您需要將 pkzip25 二進制文件復制到 /sbin/usr/sbin 目錄中,這樣系統上的所有用戶都可以使用它。(但您必須購買相應的許可證,因為它是商業軟件包。)

          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 擴展名在因特網上不經常出現,但請放心,可以使用 Linux 的 zoo 實用程序打開和創建這樣的文件。不過要記住,zoo 對于現在用戶的期望來說已有些陳舊和簡單。

          要歸檔單個文件,輸入 zoo a archive file 。同樣,要壓縮多個文件,可以使用通配符 -- 例如, zoo a archive picture*jpg.zip 擴展名自動添加到檔案名后。

          下面是其它一些 zoo 選項以及它們所添加的功能:

          • l -- 列出檔案內容(例如, zoo l archive.zoo
          • t -- 測試檔案的完整性(例如, zoo -t archive.zoo

          請注意,不是所有 zoo 選項都以負號 ( - ) 開頭

          要解壓縮 .zoo 文件,輸入 zoo e archive.zoo

          可以獲得用于所有 Linux 發行版的二進制形式的 zoo for Linux。

          下載二進制形式的 zoo: http://www.linux.org/dist/index.html

          返回到索引

          參考資料

          posted on 2005-09-20 17:07 Sung 閱讀(267) 評論(0)  編輯  收藏 所屬分類: Linux
          主站蜘蛛池模板: 绥江县| 扶沟县| 墨江| 福贡县| 永康市| 高雄县| 密山市| 祁东县| 天门市| 宜宾县| 尉氏县| 桐庐县| 卢龙县| 道真| 南华县| 建宁县| 灯塔市| 湄潭县| 高青县| 高雄市| 黄石市| 府谷县| 丹东市| 丽江市| 永济市| 莱州市| 西昌市| 和田市| 东台市| 湘阴县| 壤塘县| 怀来县| 青浦区| 汕头市| 宁南县| 益阳市| 连平县| 莆田市| 句容市| 肃北| 堆龙德庆县|