zipコマンドでディレクトリを含まずに圧縮するには-jオプションを付ける
表題まんまの備忘録なのですが、ZIPコマンドでアーカイブを作る際、ディレクトリパスを含めないためには -j オプションを付ける必要があります。
Webサーバー上のHTML、画像などのファイル類、DBのバックアップ類を定期タスクで圧縮する運用をしているサイトは多いと思いますが、解凍時に余計なディレクトリが含まれていて困った経験はないでしょうか。
ぼくはあります。めちゃくちゃあります。いっつもこの -j オプションを忘れてしまうので、忘れないように記事に書いておこうと思います。
WindowsでZIPコマンドを使う方法
WindowsでZIPコマンドを使うためにはzip.exeとbzip2.dllが必要となります。
zip.exeとbzip2.dllのダウンロード先
■zip.exe
http://gnuwin32.sourceforge.net/packages/zip.htm
■bzip2.dll
http://gnuwin32.sourceforge.net/packages/bzip2.htm
zip.exeのインストール方法
上でDLしたzip.exeとbzip2.dllを同一フォルダにパスを通すのみです。
(もしくは同一階層下に配置して実行)
zipコマンドで複数ファイルを圧縮
■例
zip [ZIPファイル名] [ファイル名(ワイルドカード可)]
しかしこの場合、ディレクトリパスも一緒に格納されてしまい、c:\test1\test2\test3\*.*を圧縮したとしたら、解凍ディレクトリの下にtest1\test2\test3というディレクトリが作成された上で解答されます。
zipコマンドでディレクトリを含まずに圧縮する方法
■例
zip -j [ZIPファイル名] [ファイル名(ワイルドカード可)]
実に単純なのですが、-jオプションを付けるだけ。
これでZIPファイルの中にディレクトリ名は格納されなため、解凍時に余計なディレクトリ名が作成されずに済みます。
まとめ
- Webサーバー上のZIPコマンド等で圧縮したZIPファイルを解凍すると余計なディレクトリ名が含まれていることがある。
- WindowsでZIPコマンドを実行したい場合はzip.exeとbzip2.dllをDLする必要がある。
- 解凍時に余計なディレクトリを作成させないためには圧縮時にあらかじめ -j オプションを付けて圧縮する。
といったところでしょうか。
今度こそZIPコマンドの -j オプションを忘れないようにしたいと思います。