7-zip
目次 |
Windows 用の高機能な圧縮解凍ソフトウェア(オープンソース、フリーウェア)
UNIX/Linux へ移植された p7zip もある。
7-zip
サポートしている形式:
- 圧縮/解凍: 7z, ZIP, GZIP, BZIP2, TAR
- 解凍のみ: RAR, CAB, ISO, ARJ, LZH, CHM, Z, CPIO, RPM, DEB, NSIS
自己解凍形式も作成可能。
p7zip
p7zip ビルド方法
ソースコード http://sourceforge.net/projects/p7zip/files/
- OS ごとの makefile.xxxxx を makefile.machine という名前にコピーし、make する。
- install.sh を実行すると、ビルドしたバイナリがインストール(コピー)される。
make TARGET でビルド内容を変えることができる(README 参照)
make 空白 にすると、7za バイナリのみビルドする。
prefix は install.sh を書き換えることで可能。デフォルトでは DEST_HOME=/usr/local になっている。
7za
バイナリ単体で実行可能。7z
実行にライブラリ(lib/p7zip)が必要。プラグインで拡張できる。
Mac OS X で 7za をビルドする例
cp makefile.macosx_llvm_64bits makefile.machine make all_test sudo ./install.sh
7z の使い方
圧縮し解凍すると UID/GID が含まれない。ただし、パーミッションやタイムスタンプは維持される。
圧縮後の .7 ファイルのパーミッションは 500 になる。
書式
7z <command> [<switches>...] <archive_name> [<file_names>...]
圧縮
a
コマンドで解凍。
7z a archive.7z file1 file2 file3 7z a archive.7z dir
解凍
x
コマンドだと、圧縮時のディレクトリ構成をそのまま解凍する。(普通の解凍)
7z x archive.7z
e
コマンドだと、圧縮時のディレクトリ構成を無視して解凍する。
7z e archive.7z
UID/GID を維持しディレクトリを圧縮&解凍する方法
圧縮:
tar
コマンドでアーカイブ化し、パイプで7z
に渡す。7z
は-si
スイッチを付け、stdinから読み込むようにする。
tar cf - DIR | 7z a -si archive.7z
解凍:
-so
スイッチで stdout し、パイプでtar
に渡す。
7z x -so archive.7z | tar xf -
自己解凍ファイルの作成方法
自己解凍ファイルを作成するには -sfx[{name}]
スイッチを使う。
7z a -sfx DIR Archive.exe
例えば CentOS で自己解凍ファイルを作ると Linux で自己解凍できるファイルが作られる。
[shell]$ 7z a -sfx DIR Archive.exe [shell]$ file Archive.exe Archive.exe: ELF 64-bit LSB executable, x86-64, ...
CentOS で Windows 用の自己解凍ファイルを作るには、Windows にインストールされている 7z.sfx, 7zCon.sfx を CentOS へコピーして利用する。
Windows に 7-Zip をインストールし、C:¥Program Files¥7-Zip フォルダにある 7z.sfx, 7zCon.sfx を、CentOS の /usr/libexec/p7zip ディレクトリにコピーする。 Windows と CentOS の 7z.sfx, 7zCon.sfx は同じファイル名なので、Windows のファイルを 7zW32.sfx, 7zConW32.sfx のように変えてからコピーする。 7z.sfx は GUI 用、7zCon.sfx はコンソール用を意味する。 |
mv 7z.sfx /usr/libexec/p7zip/7zW32.sfx mv 7zCon.sfx /usr/libexec/p7zip/7zConW32.sfx
あとは、-sfx[{name}]
スイッチで Windows 用の SFX を指定して圧縮する。
[shell]$ 7z a -sfx7zW32.sfx DIR Archive.exe [shell]$ file Archive.exe Archive.exe: PE32 executable for MS Windows (GUI) Intel 80386 32-bit
参考ページ