主にWindowsで人気のオープンソースのファイルアーカイバ「7-Zip」。
macOSやLinuxではあまりメジャーではありませんが、圧縮率の高さからこれらのプラットフォームでも7-Zip形式のファイルを扱いたいという方も多いかもしれません。
今回はmacOSで、7-Zip形式のファイルを扱う方法を説明したいと思います。
目次
コマンドラインから扱うのが簡単
7-Zipは最近、macOSやLinux用のコマンドラインバージョンが提供されるようになりました。しかし以前から使われてきたp7zipというツールも存在し(こちらはサードパーティ開発者によって作成されました)、各種パッケージマネージャーを使って簡単にインストールすることができるようになっています。
今回はp7zipを使う方法を紹介します。
macOSの場合は、HomebrewやMacPortsを使って簡単にインストールできます。
Homebrewの場合:
brew install p7zip
MacPortsの場合:
sudo port install p7zip
インストールされた「7z」コマンドを以下のように使用します。
# 圧縮 $ 7z a アーカイブ名.7z ファイル名(or フォルダ名) # ファイルの中身一覧 $ 7z l アーカイブ名.7z # 解凍 $ 7z x アーカイブ名.7z
例えばtmp2フォルダを圧縮する場合「a」コマンドを使い以下のように実行します。実行後カレントフォルダにtmp2.7zが作られます。
[sora@amber] $ 7z a tmp2.7z tmp2 7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21 p7zip Version 16.02 (locale=utf8,Utf16=on,HugeFiles=on,64 bits,6 CPUs x64) Scanning the drive: 1 folder, 2 files, 13 bytes (1 KiB) Creating archive: tmp2.7z Items to compress: 3 Files read from disk: 1 Archive size: 203 bytes (1 KiB) Everything is Ok
中身を確認する場合は「l」コマンドを使用します。
[sora@amber] $ 7z l tmp2.7z 7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21 p7zip Version 16.02 (locale=utf8,Utf16=on,HugeFiles=on,64 bits,6 CPUs x64) Scanning the drive for archives: 1 file, 203 bytes (1 KiB) Listing archive: tmp2.7z -- Path = tmp2.7z Type = 7z Physical Size = 203 Headers Size = 186 Method = LZMA2:12 Solid = - Blocks = 1 Date Time Attr Size Compressed Name ------------------- ----- ------------ ------------ ------------------------ 2022-01-20 20:45:02 D.... 0 0 tmp2 2022-01-20 20:45:02 ....A 0 0 tmp2/test.js 2022-01-20 20:44:31 ....A 13 17 tmp2/README.md ------------------- ----- ------------ ------------ ------------------------ 2022-01-20 20:45:02 13 17 2 files, 1 folders
解凍する場合「x」コマンドを使用します。
[sora@amber] $ 7z x tmp2.7z 7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21 p7zip Version 16.02 (locale=utf8,Utf16=on,HugeFiles=on,64 bits,6 CPUs x64) Scanning the drive for archives: 1 file, 203 bytes (1 KiB) Extracting archive: tmp2.7z -- Path = tmp2.7z Type = 7z Physical Size = 203 Headers Size = 186 Method = LZMA2:12 Solid = - Blocks = 1 Would you like to replace the existing file: Path: ./tmp2/test.js Size: 0 bytes Modified: 2022-01-20 20:45:02 with the file from archive: Path: tmp2/test.js Size: 0 bytes Modified: 2022-01-20 20:45:02 ? (Y)es / (N)o / (A)lways / (S)kip all / A(u)to rename all / (Q)uit? A Everything is Ok Folders: 1 Files: 2 Size: 13 Compressed: 203
7zコマンドをそのまま実行すると詳細なオプションが確認可能です。
[sora@amber] $ 7z 7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21 p7zip Version 16.02 (locale=utf8,Utf16=on,HugeFiles=on,64 bits,6 CPUs x64) Usage: 7z[ ...] [ ...] [<@listfiles...>] a : Add files to archive b : Benchmark d : Delete files from archive e : Extract files from archive (without using directory names) h : Calculate hash values for files i : Show information about supported formats l : List contents of archive rn : Rename files in archive t : Test integrity of archive u : Update files to archive x : eXtract files with full paths -- : Stop switches parsing -ai[r[-|0]]{@listfile|!wildcard} : Include archives -ax[r[-|0]]{@listfile|!wildcard} : eXclude archives -ao{a|s|t|u} : set Overwrite mode -an : disable archive_name field -bb[0-3] : set output log level -bd : disable progress indicator -bs{o|e|p}{0|1|2} : set output stream for output/error/progress line -bt : show execution time statistics -i[r[-|0]]{@listfile|!wildcard} : Include filenames -m{Parameters} : set compression Method -mmt[N] : set number of CPU threads -o{Directory} : set Output directory -p{Password} : set Password -r[-|0] : Recurse subdirectories -sa{a|e|s} : set Archive name mode -scc{UTF-8|WIN|DOS} : set charset for for console input/output -scs{UTF-8|UTF-16LE|UTF-16BE|WIN|DOS|{id}} : set charset for list files -scrc[CRC32|CRC64|SHA1|SHA256|*] : set hash function for x, e, h commands -sdel : delete files after compression -seml[.] : send archive by email -sfx[{name}] : Create SFX archive -si[{name}] : read data from stdin -slp : set Large Pages mode -slt : show technical information for l (List) command -snh : store hard links as links -snl : store symbolic links as links -sni : store NT security information -sns[-] : store NTFS alternate streams -so : write data to stdout -spd : disable wildcard matching for file names -spe : eliminate duplication of root folder for extract command -spf : use fully qualified file paths -ssc[-] : set sensitive case mode -ssw : compress shared files -stl : set archive timestamp from the most recently modified file -stm{HexMask} : set CPU thread affinity mask (hexadecimal number) -stx{Type} : exclude archive type -t{Type} : Set type of archive -u[-][p#][q#][r#][x#][y#][z#][!newArchiveName] : Update options -v{Size}[b|k|m|g] : Create volumes -w[{path}] : assign Work directory. Empty path means a temporary directory -x[r[-|0]]{@listfile|!wildcard} : eXclude filenames -y : assume Yes on all queries
まとめ
MacやLinuxで7-Zip形式のファイルを扱いたい場合「p7zip」を使用することができます。今後7-Zip公式コマンドラインツールが普及する可能性が高いですが、枯れたp7zipの存在も覚えておくといざという時に便利かもしれません。