LoginSignup
6
1

More than 3 years have passed since last update.

Linuxで4GB以上のZIPファイルを解凍する。

Posted at

結論

  • 4GB以上のZIPファイルは作成しない、もらわない。
  • tarや7zなどでもらう。
  • もらってしまった場合は相手のOSを確認する。
    • Linux系、mac系なら7zで解凍できる。
    • Windows系はエンコード問題が発生するので、unarを利用する。(全部unarでもいい)

背景というか何が起きたのか?

顧客から大容量のローカルに保存してあるファイルをいただきました。
元の容量が数百GBということと、コロナの影響で物理的にわたしづらいということもあり、顧客側できりの良いところで分割してファイルサーバにアップロードしてもらったのですが、そのファイルたちが1ファイル2~10GBのZIPだったというのが、ことの初まりです。
ローカルのPCで数百GBを捌けないので、ubuntuサーバーで解凍しようとしたけどいろいろな問題にはまりました。

1. 4GBを越えたZIPファイルはUNZIPできない。

unzipもとい裏のライブラリの影響で、4GBを越えるものは下記のようなエラーとなり解凍できません。
びっくりですね。

Archive: xyz.zip
  End-of-central-directory signature not found.  Either this file is not
  a zipfile, or it constitutes one disk of a multi-part archive.  In the
  latter case the central directory and zipfile comment will be found on
  the last disk(s) of this archive.

この問題だけであれば、7zをインストールすることで解決できます。

sudo apt install p7zip-full

7zでは解凍はe,xのどちらかでできますが、eはフォルダー構造を無視して解凍するので普通ならxで解凍します。

7z x -o destdir xyz.zip

2. SHIFT-JISが文字化け

Windowsの日本語ユーザーの殆どの方はをSHIFT-JIS標準で使われています。ZIPでは文字コードを変換したりしないため、SJISのファイル名はそのままSJISとして保存されています。
最近のLinuxやMacはUTF8ですので、解凍時に文字化けした状態となります。
ググると色々な解法(LANGの設定を変更すればいいとかconvnv使うとか)が出てきますが、どれを試しても上手くいきませんでした。

いろいろググった結果、unarで解凍で一発解決になりました。
インストールは下記で可能です

sudo apt install unar

解凍はシンプルに

unar xyz.zip

でできます。フォルダーが存在していると上書きかどうか聞いてきますので、面倒な場合は-fを利用するといいです。

最後に

色々あるとおもいますが、ZIPつかわない方が幸せになれそうです。

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1