ownCloudは自前でファイル共有サーバを立てるためのサーバアプリケーション。フォルダをまとめてダウンロードしたところ,Macでzipの解凍ができない。

検索してみるとよく知られた問題のようである。ownCloudは大容量データをアーカイブするためにzip64を導入したが,Macのアーカイブユーティリティが対応していない。/usr/bin/unzipは古いバージョンだ。

$ /usr/bin/unzip --version
caution:  both -n and -o specified; ignoring -o
UnZip 5.52 of 28 February 2005, by Info-ZIP.  Maintained by C. Spieler.  Send
bug reports using http://www.info-zip.org/zip-bug.html; see README for details.

Info-ZIPのUnZipのページにはセキュリティ上の脆弱性が警告されている。新しいものを入れた方が良さそうだ。unzipzipMacPortsでインストールする。

$ sudo port -d install unzip zip

MacPortsで入れたunzipで解凍しようとしたが,複数の部分(multi-part)からなるアーカイブだとする警告が出て解凍できない。

Archive:  archive.zip
warning [archive.zip]:  zipfile claims to be last disk of a multi-part archive;
  attempting to process anyway, assuming all parts have been concatenated
  together in order.  Expect "errors" and warnings...true multi-part support
  doesn't exist yet (coming soon).

実際は単一のファイルしかない。zipで修復する。

$ zip -F archive.zip --out archive1.zip

修復したファイルも解凍できない。

Archive:  archive1.zip
   skipping: archive1/               need PK compat. v4.5 (can do v2.1)
   skipping: archive1/file1.docx  need PK compat. v4.5 (can do v2.1)
   skipping: archive1/file2.docx  need PK compat. v4.5 (can do v2.1)

圧縮アリゴリズムは7zipのようである。MacPortsでp7zipをインストールし,7zで解凍する。

$ sudo port -d install p7zip
$ 7z x archive1.zip 

7zでは解凍できた。試しに元のファイルを解凍してみたら,解凍できた。

$ 7z x archive.zip 

結論。ownCloudでダウンロードしたアーカイブの拡張子はzipだが,7zip形式で圧縮されているので,p7zipをインストールすれば7zで解凍できる。