Windowsでよく使われる「7-Zip」ですが、Linuxでも**7z形式(.7z)**を扱いたい場面は多いですよね。
- 大容量のファイルを高圧縮でまとめたい
- Windowsユーザーから7zファイルを渡されて解凍したい
- パスワード付きアーカイブを作成したい
- サーバーのログファイルを効率的にバックアップしたい
- tarよりも高い圧縮率でファイルを保存したい
こんなとき、Linuxでも7z
コマンドを使えば簡単に7zipを扱えます。
この記事では、Linuxでの7zipコマンド(7z)の使い方を、インストールから圧縮・解凍、便利なオプション、トラブル対処まで初心者にもわかりやすく解説します。
7zコマンドのインストール方法
ディストリビューションによってパッケージ名が異なります。以下の手順でインストールしましょう。
Debian/Ubuntu系
sudo apt update
sudo apt install p7zip-full
インストールされるコマンド
7z
:メインコマンド7za
:軽量版7zr
:.7z専用版
CentOS/RHEL/Fedora系
CentOS 7/RHEL 7
sudo yum install epel-release
sudo yum install p7zip p7zip-plugins
CentOS 8以降/Fedora
sudo dnf install p7zip p7zip-plugins
Arch Linux
sudo pacman -S p7zip
openSUSE
sudo zypper install p7zip
インストール確認
インストールが完了したら、以下のコマンドで確認できます。
7z --help
または
7z
バージョン情報とコマンド一覧が表示されれば成功です。
基本的な圧縮コマンド
シンプルな圧縮
ディレクトリ全体を圧縮
7z a archive.7z /path/to/directory
複数ファイルを圧縮
7z a documents.7z file1.txt file2.pdf file3.jpg
ワイルドカードを使った圧縮
7z a logs.7z /var/log/*.log
圧縮レベルの指定
7zでは圧縮レベルを0〜9で指定できます。
# 最高圧縮(時間がかかるが最小サイズ)
7z a -mx=9 archive.7z /path/to/data
# 高速圧縮(圧縮率は低いが速い)
7z a -mx=1 archive.7z /path/to/data
# 標準圧縮(バランス型)
7z a -mx=5 archive.7z /path/to/data
圧縮レベルの目安
- 0:無圧縮(最速)
- 1:最速圧縮
- 3:高速圧縮
- 5:標準圧縮(デフォルト)
- 7:高圧縮
- 9:最高圧縮(最遅)
特定のファイル形式を除外
# .tmp と .log ファイルを除外
7z a archive.7z /path/to/data -x!*.tmp -x!*.log
# 隠しファイルを除外
7z a archive.7z /path/to/data -x!.*
基本的な解凍コマンド
カレントディレクトリに解凍
7z x archive.7z
x
コマンドの特徴
- ディレクトリ構造を保持
- 元のパス情報を維持
指定ディレクトリに解凍
7z x archive.7z -o/tmp/unpack
注意点
-o
とディレクトリパスの間にスペースは入れない- 出力先ディレクトリが存在しない場合は自動作成
フラットに解凍(ディレクトリ構造を無視)
7z e archive.7z
e
コマンドの特徴
- すべてのファイルをカレントディレクトリに展開
- ディレクトリ構造は無視される
特定のファイルのみ解凍
# .txt ファイルのみ解凍
7z x archive.7z *.txt
# 特定のディレクトリのみ解凍
7z x archive.7z docs/
アーカイブの中身を確認
ファイル一覧の表示
7z l archive.7z
表示される情報
- ファイル名
- ファイルサイズ
- 圧縮後サイズ
- 変更日時
- 属性
詳細情報の表示
7z l -slt archive.7z
追加で表示される情報
- CRC32チェックサム
- 圧縮方式
- ブロック情報
ファイル数とサイズの概要
7z l archive.7z | tail -3
これで合計ファイル数、総サイズ、圧縮後サイズが表示されます。
パスワード付き圧縮・解凍
パスワード付きで圧縮
7z a -pMySecretPass archive.7z /path/to/data
より安全な方法(パスワードを隠す)
7z a archive.7z /path/to/data
# パスワードの入力を求められるので入力
パスワード付きアーカイブの解凍
7z x archive.7z
# パスワードの入力を求められるので入力
コマンドラインでパスワード指定
7z x -pMySecretPass archive.7z
ファイル名も暗号化
7z a -pMyPass -mhe=on archive.7z /path/to/data
-mhe=on
オプションでファイル名も暗号化されます。
高度なオプションと使用例
分割アーカイブの作成
# 100MBずつに分割
7z a -v100m archive.7z /path/to/large_data
生成されるファイル
- archive.7z.001
- archive.7z.002
- archive.7z.003…
分割アーカイブの解凍
7z x archive.7z.001
最初のファイルを指定するだけで、すべての分割ファイルが自動で処理されます。
圧縮方式の指定
# LZMA2方式(デフォルト、最高圧縮率)
7z a -m0=lzma2 archive.7z /path/to/data
# PPMd方式(テキストファイルに効果的)
7z a -m0=ppmd archive.7z /path/to/text_files
# BZip2方式(バランス型)
7z a -m0=bzip2 archive.7z /path/to/data
進行状況の表示
7z a archive.7z /path/to/data -bb1
-bb1
オプションで詳細な進行状況が表示されます。
テストと整合性チェック
# アーカイブの整合性をチェック
7z t archive.7z
# CRCチェックを含む詳細テスト
7z t -bb3 archive.7z
よく使う実用的なコマンド例
ログファイルの定期バックアップ
#!/bin/bash
DATE=$(date +%Y%m%d)
7z a -mx=9 /backup/logs_$DATE.7z /var/log/*.log
Webサイトのバックアップ
7z a -mx=7 -pBackupPass website_backup.7z /var/www/html/ -x!*.tmp -x!cache/*
データベースダンプの圧縮
mysqldump -u user -p database | 7z a -si database_backup.7z
古いファイルの圧縮
find /path/to/files -name "*.log" -mtime +30 | xargs 7z a old_logs.7z
他の圧縮形式との比較
7z vs tar.gz vs zip
形式 | 圧縮率 | 速度 | 互換性 | パスワード保護 |
---|---|---|---|---|
.7z | 最高 | 遅い | 中程度 | 強力 |
.tar.gz | 高い | 速い | 高い | なし |
.zip | 標準 | 速い | 最高 | 弱い |
ファイルサイズ比較例
1GBのログファイルを圧縮した場合の例:
# tar.gz(gzip -9相当)
tar -czf logs.tar.gz /var/log/ # 約200MB
# 7z(標準圧縮)
7z a logs.7z /var/log/ # 約150MB
# 7z(最高圧縮)
7z a -mx=9 logs.7z /var/log/ # 約120MB
トラブルシューティング
よくあるエラーと対処法
エラー1:「7z: command not found」
# 原因:7zがインストールされていない
# 対処:インストールを実行
sudo apt install p7zip-full
エラー2:「Wrong password?」
# 原因:パスワードが間違っている
# 対処:正しいパスワードを確認
7z x archive.7z # 再度パスワードを入力
エラー3:「No files to process」
# 原因:指定したファイルが存在しない
# 対処:ファイルパスを確認
ls -la /path/to/file # ファイルの存在確認
エラー4:「Can not open output file」
# 原因:書き込み権限がない
# 対処:権限を確認し、適切なディレクトリで実行
chmod u+w /output/directory
破損したアーカイブの修復
# アーカイブの整合性チェック
7z t archive.7z
# 可能な範囲でファイルを抽出
7z x archive.7z -y
便利なエイリアスとスクリプト
よく使うコマンドのエイリアス
.bashrc
や.zshrc
に追加:
# 最高圧縮での7z作成
alias 7zmax='7z a -mx=9'
# パスワード付き圧縮
alias 7zpass='7z a -mhe=on'
# ファイル一覧表示
alias 7zlist='7z l'
# テスト
alias 7ztest='7z t'
自動バックアップスクリプト
#!/bin/bash
# backup.sh
SOURCE_DIR="/home/user/documents"
BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d_%H%M%S)
ARCHIVE_NAME="backup_$DATE.7z"
echo "バックアップを開始します..."
7z a -mx=7 -p "$BACKUP_DIR/$ARCHIVE_NAME" "$SOURCE_DIR" -x!*.tmp -x!*.cache
if [ $? -eq 0 ]; then
echo "バックアップが完了しました: $ARCHIVE_NAME"
else
echo "バックアップに失敗しました"
exit 1
fi
よくある質問と回答
Q: 7zとzipのどちらを使うべき?
A: 用途によって使い分けましょう。
7zがおすすめの場合
- 高い圧縮率が必要
- セキュリティを重視(強力なパスワード保護)
- Linuxサーバーでのバックアップ
zipがおすすめの場合
- 他の人との共有が多い
- 古いシステムとの互換性が必要
- 解凍速度を重視
Q: 大量のファイルを効率的に圧縮するには?
A: 以下のテクニックを組み合わせましょう。
# 並列処理で高速化(複数のCPUコアを使用)
7z a -mmt=4 archive.7z /path/to/data
# 適度な圧縮レベルで時間短縮
7z a -mx=5 archive.7z /path/to/data
# 不要なファイルを除外
7z a archive.7z /path/to/data -x!*.tmp -x!*.log -x!.git/*
Q: メモリ使用量を抑えたい場合は?
A: 以下のオプションでメモリ使用量を制限できます。
# 辞書サイズを制限(メモリ使用量を抑制)
7z a -md=16m archive.7z /path/to/data
# ソリッドブロックサイズを制限
7z a -ms=64m archive.7z /path/to/data
まとめ:7zコマンドをマスターして効率的なファイル管理を
Linuxでの7zコマンドは、以下のような場面で非常に有用です。
基本操作
- 圧縮:
7z a archive.7z /path/to/data
- 解凍:
7z x archive.7z
- 一覧表示:
7z l archive.7z
- テスト:
7z t archive.7z
高度な機能
- 高圧縮:
-mx=9
オプション - パスワード保護:
-p
オプション - 分割アーカイブ:
-v
オプション - 進行状況表示:
-bb1
オプション
実用的な使い方
- サーバーログの定期バックアップ
- 大容量データの効率的な保存
- セキュアなファイル共有
- ストレージ容量の節約
コメント