Windows⇔Linux間での zip ファイルの文字化けを解決する(zip,unzip,7za)

こんにちは。サイオステクノロジー OSS サポート担当何敏欽です。

業務では Windows ⇔ Linux 間でデータのやりとりをすることが良くあります。でも、Windows で圧縮されたファイルを Linux 上で解凍、またはその逆の場合も、文字化けを起こしてしまって困った経験をされた方も多いのではないでしょうか?

そんなときの解決方法をご紹介します。

Windows → Linux 文字化け回避する方法

Windows (Shift_JIS) でファイル名に日本語が含まれる zip ファイルを作成し、 Linux (UTF-8) において unzip コマンドで解凍する場合、下記のように「-O」 オプションを使用することで、文字コードを変換して解凍することができます。

「-O」オプションは、 RHEL 同梱版の unzip では unzip-6.0-3.el6 (RHEL6)、unzip-6.0-16.el7 (RHEL7) 以降でサポートされます。

Linux → Windows 文字化け回避する方法

RHEL 同梱版の zip なら、unzip と同様に便利なオプションが用意されていると思いましたが、残念ながら、zip コマンドは圧縮した時点でファイル名の文字コードを変換する方法はありません。

そのため、Linux で zip コマンドでファイル名に日本語が含まれる zip ファイルを作成し、Windows で解凍する場合では、下記のように、任意のディレクトリにて、まず convmv コマンド (# yum install convmv で導入) を使用して圧縮したいファイルの文字コードを変換してから、zip コマンドでディレクトリ名を指定して圧縮することで、文字化けを起こさずに解凍することができます。

p7zip パッケージをインストールしてみる

zip で用いられる暗号アルゴリズムは、zipcrypto と呼ばれるものです。zipcrypto は強度的に問題があり、パスワードは英数小文字のみ、8桁の構成は 1秒以下で解析できたり、従来言われてきたパスワードは 4種類 93字の組み合わせ、8桁の構成でも 2週間ですべての組み合わせが解析できてしまいます。

RHEL 同梱版の zip、unzip コマンドでは使用される暗号化アルゴリズムは zipcrypto のみで、AES256 等の他の強力な暗号アルゴリズムをサポートしていないため使用できません。より強度の強い AES256 暗号化形式でパスワード付 zipファイルを作成するには p7zip パッケージが必要です。しかしながら、p7zip パッケージは RHEL では提供、およびサポートされておらず、EPEL リポジトリをインストールしてから p7zip パッケージをインストールする必要があります。

7za コマンドを使ってみる

AES256 暗号化形式でパスワード付 zip ファイル、以下のように「-mem=AES256」を指定して実行します。

「-m」オプションは圧縮方法を設定するもので、空白を入れずに、「em」を「AES256」に指定するという意味になります。「-m」オプションについて、ココを確認してください。

また、以下のようにパスワードなしで -p パラメータを指定することで、パスワードを入力するよう求められます。こちらの方法は、スクリーン上にパスワードを表示しないため、より安全であると考えられます。

解凍するには、「x」オプション指定して実行する場合、圧縮時のディレクトリ構成をそのまま解凍します。「e」オプションを指定する場合、圧縮時のディレクトリ構成を無視して解凍します。

以上で zip、unzip コマンドを用いて zip ファイルの文字化けの解決方法や、7za コマンドを用いてより安全な暗号化形式の zip ファイルの作成 (圧縮・解凍する) 方法を説明しました。

>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメント投稿

メールアドレスは表示されません。


*