ilyaのノート

いつかどこかでだれかのために。

Mac OSX 10.4(Tiger)における圧縮/解凍アーカイバについて〔2008.3〕

▽以下、2008年3月にノートしたもの。Macintosh OSX 10.4(Tiger)環境。


OSX 解凍・圧縮ツール|Point Line
http://point-line.info/blog/archives/2007/04/04_0245.php
▼データ ( 圧縮解凍 )|OSX Freewares
http://www16.plala.or.jp/x-tomo/Pages/data.html


OS X デフォルトの zipユーティリティ「BOMArchiveHelper」は問題多し。他の環境で解凍できないzipアーカイブを生成する事例、また解凍の失敗も多発。Mac-Win間の日本語ファイル名互換にも対応していない。変更が必要。
▽プログラム本体は「/System/Library/CoreServices/BOMArchiveHelper.app」。
Mac OS X標準アーカイブユーティリティ「BOMArchiveHelper」について|CNET Japan
http://japan.cnet.com/blog/0055/2006/04/30/mac_os_xbomarch_62e6/
「〔BOMArchiveHelperの〕その実体はUNIXコマンドの「ditto」をGUIレベルに拡張したもので、「Finder」における「ファイル」> 「アーカイブを作成」は、この「BOMArchiveHelper」によって実現されており(コンテキストメニュー等からも呼び出し可能)、ZIP形式のみならず「CPIO」形式(アーカイブのみサポート)や「CPGZ」形式(CPIO形式に圧縮を施したもの。尚、アーカイブと圧縮は同義ではありません)等のアーカイブ形式もサポート。「BOMArchiveHelper」に直接ファイルをドラッグアンドドロップすると「CPGZ」形式のアーカイブが作成される事となります。尚、「Mac OS X 10.4 Tiger」以降の「BOMArchiveHelper」を利用して圧縮されたファイルには、メタデータがデータフォークに自動添付する仕組みが採用されており、Mac OS特有のリソースフォークは「AppleDouble」方式にて付加される事となります。そしてこの件等に起因して、Mac OS Xの旧バージョンやWindowsでは解凍に失敗する事もあるので、利用に際しては互換性に注意を払う必要があります。」
▼BOMArchiveHelper.app のワナ、あるいはクロスプラットフォーム汎用のデータを用いようの巻(2003/11/29)|ねこめしにっき
http://www.remus.dti.ne.jp/~a-satomi/nikki/2003/11c.html#d29n02
OSX10.3 Finder の ZIP 圧縮ファイル作成機能は、ファイルがリソースフォーク付きの場合それを AppleDouble 方式で分離して圧縮するようでして、はたまた OSX10.3 インスト後 ZIP を開くデフォルトアプリに設定される /System/Library/CoreServices/BOMArchiveHelper.app も、解凍の際に AppleDouble 形式の復元処理を行う様で、それによりリソースフォークの保持を図る方式を取っているようです。/ しかし、従来の Mac 用の ZIP やら LHA やらの圧縮解凍ツールは、リソースフォークの保持に MacBinary エンコードを経由する方式を取るのが伝統的だったわけで。したがって、 10.3 Finder で作成した ZIP ファイルを StuffIt Expander などで解凍すると、リソースフォーク部分は正常に統合・復元されません。たとえば safari-v100-xml.css.zip に同梱されてる「インターネットロケーションファイル」は、そのロケーション (URL) をリソースフォークに保持するもの(そしてデータフォークは 0 バイト)ですが、リソースフォークが消え飛んで中身が完全に 0 バイトの正体不明な謎ファイルとして出てきて、ついでに謎の __MACOSX というフォルダが現れます(ここにインターネットロケーションファイルのリソースフォーク部分が隠しファイルとして分離されて入っている)。…といった感じ。」


圧縮アーカイバ
▽要求: クロスプラットフォーム対応、とりわけWindowsとの互換性確保の要あり。また、日本語ファイル名への対応も必要。


▼「CleanArchiver(あにゃきち 作)で、英数字ファイル名をzip圧縮するのが最有力か(Windows環境への受け渡し)。各種圧縮形式をフォロー。Macリソースフォークの削除が可能Mac間では削除はもったいない?)。複数ファイルの個別圧縮も可能。日本語ファイル名への対応は不詳。
http://www.sopht.jp/cleanarchiver/
▽〔追記: CleanArchiver採用は正解。現在のところWindowsへの受け渡しにおけるトラブルは無し。Windows上で解凍してもリソースフォークは残らず、混乱が生じない。ただし、日本語ファイル名には対応していない(Windows上で解凍すると文字化けする)。zipの広範な普及を考えると、半角英数ファイル名をアーカイブするのであれば、もっともよい圧縮方法と思われる。〕


▼「DropLHa」。lzh書庫生成。互換性が高い様子。日本語ファイル名対応。OSX 10.2以降対応。(解凍ツール DropUnLHaはMac OS X 10.2.8以降。)
http://www.fan.gr.jp/~sakai/lha.php
「DropLHa はドラッグ&ドロップで簡単に LHA アーカイブを作ることができるアプリケーションです。Windows ユーザとファイルをやり取りするときに使ってみてください。日本語のファイル名もサポートしています。」
▽〔追記: 必須。日本語ファイル名に対応。Windows上で解凍しても日本語ファイル名として展開できる。リソースフォークも削除されており、Windows上でも混乱は生じない。OSX上で日本語ファイル名をアーカイブしてWindowsへ渡すのであれば、もっともよい圧縮方法と思われる。(日本語ファイル名の維持という点においては、おそらく代替アーカイバは存在しない。)〕


解凍/展開アーカイバ
▽かつてMac標準だった StuffItExpander は存外に解凍できないアーカイブがある。
▽また、受け取ったアーカイブファイルの文字コードを自動で判別・変換してくれる解凍・展開ユーティリティはないか?
▽なお、Macの解凍ユーティリティ類は、アーカイブファイルに破損を発見するとまったく解凍してくれない様子。破損していないファイルだけでも強引に解凍してくれればよいものを。(Windowsでは無理矢理に一部を解凍できることが多い。)


▼「The Unarchiver」 (英語)
http://wakaba.c3.cx/s/apps/unarchiver.html
「解凍可能な圧縮形式はZip、Tar-GZip、Tar-BZip2、Rar、7-zip、LHA、StuffIt(.sitx は除く)など、さまざまなアーカイブ形式に対応した解凍/伸張ツール。」
▼theunarchiver|Project Hosting on Google Code
http://code.google.com/p/theunarchiver/
▽入手しておくべき。OS X 10.3.9以降対応。ほとんどの圧縮形式を解凍できる。また、破損アーカイブも部分的な解凍が可能(たとえば、中途までダウンロードしたzipアーカイブを解凍できる)。定冠詞The は伊達ではない。


▼「Drop_unzip
http://cathand.org/cgi-bin/sb/sb.cgi?cid=8
http://pippin.cathand.org/soft.html
http://pippin.cathand.org/sblog/eid465.html
▽zipに関しては、StuffItExpanderよりも解凍の成功率が高い印象(管見のかぎり)。2バイト(日本語)パスワードでロックされた zipファイルに対応している様子。
▽2006.11.1に公開された「Drop_unzip 1.6a 〔Drop_unzip_06a.dmg (UniversalBinary)〕」を最終バージョンとして配布を終了したと思われる。


▽参考ノート:
▼CleanArchiver|Sopht Square
http://www.sopht.jp/cleanarchiver/
「圧縮形式はgzip, bzip2, zipなどの標準的な形式をサポートした上に、圧縮済みDisk Imageの作成にまで対応しています。さらにあなたのコンピュータにAllume Systems社のDropStuffがインストールされていると、このアプリケーションをAppleScript経由でCleanArchiverが直接呼び出すことで、StuffItおよびStuffIt X形式のアーカイブを作成することもできます。/ さらにCleanArchiverの最大の特徴として、簡単なオプションの設定でMac OS Xのシステム管理ファイルである.DS_Storeやカスタムアイコンファイル(Icon\r)をアーカイブに含めなくする機能があります。そのため他のOS向けのアーカイブを作成する際に、相手にとって意味のないファイルをアーカイブの中に残さなくて済むようになります。」
▼CleanArchiver - ドキュメント|Sopht Square
http://www.sopht.jp/cleanarchiver/document.html
リソースフォークMac OSに固有の(より正確にはHFSに固有の)、データ本体以外の情報を格納しておくことのできる領域のことです。たとえばファイルにカスタムアイコンを貼り付けて、リソースフォークを保持したまま別のMacにファイルを移動させると、やはりカスタムアイコンで表示されます。このときに貼り付けた画像を一緒に移動させなくても、カスタムアイコンは表示されます。これはなぜかというと、ファイル自体が内部に画像の情報を持っているからです。〔中略〕/ ところでこのような付加的なデータを利用できるのはMac OSだけであるため、リソースフォークつきのデータを他のOSに持ち込んでも、リソースフォークは無視されデータフォークだけしか扱われません。そのため他のOSに持ち込むデータを含むアーカイブには、そもそもリソースフォーク自体意味を成さないので、消失させてしまってもおそらく支障はありません。むしろ無意味なデータでファイルの容量を増大させるよりは消してしまった方が良いと思います。」
「最近はMac OSにおいてもできるだけリソースフォークを利用しないようにする方針なようなのですが、一部のファイルやアプリケーションはこのリソースフォーク内に重要なデータを保持することがあります。そのようなファイルをリソースフォークを保持できない圧縮形式で圧縮してしまうと、解凍したときに元のファイルの内容を取り戻せなくなってしまう可能性があるので注意が必要です。〔中略〕/ 確認方法は単純に、gzipなどで圧縮したあと解凍し、そのファイルを開き直してみてください。リソースフォークを必要とするファイルはこの時点で開くことができないか意味のわからないデータに変わってしまうはずです。〔略〕その他クリエータ(どのアプリケーションで作られたファイルかを表す情報)や、カスタムアイコンが消失するなどのFinderレベルのデータ損失もありますので、それが重要ならリソースフォークは保存した方が良いでしょう。ただし内部データに支障がないならリソースフォークを消した方がファイル容量も減少するのでいい場合もあります。」