/Linuxコマンド

圧縮・アーカイブ

圧縮とアーカイブ

tar・gzip・xz・zip・7z で、ファイルをまとめる・圧縮する・展開する。拡張子ごとの展開コマンド早見表つき。

拡張子ごとの展開コマンド

拡張子展開作成
.tar.gz / .tgztar xzf a.tar.gztar czf a.tar.gz dir/
.tar.xztar xJf a.tar.xztar cJf a.tar.xz dir/
.tar.bz2tar xjf a.tar.bz2tar cjf a.tar.bz2 dir/
.tar.zsttar --zstd -xf a.tar.zsttar --zstd -cf a.tar.zst dir/
.tartar xf a.tartar cf a.tar dir/
.gzgunzip a.gzgzip a
.xzunxz a.xzxz a
.zipunzip a.zipzip -r a.zip dir/
.7z7z x a.7z7z a a.7z dir/

tarまとめる・圧縮する・展開する

複数のファイルやフォルダを1つのファイルにまとめたり、.tar.gz などを展開したりする定番のコマンドです。

オプション意味
c / x / t作る / 展開する / 中身の一覧
f <ファイル>アーカイブのファイル名(最後に書く)
z / J / jgzip / xz / bzip2 で圧縮
v処理したファイルを表示
-C <ディレクトリ>そのディレクトリで作業する(展開先の指定)
--exclude='<パターン>'除外する
--strip-components=N展開するとき、パスの先頭N階層を外す
bash
$ tar czf backup.tar.gz ~/project                 # まとめて gzip 圧縮
$ tar czf site.tgz --exclude=node_modules --exclude=.git site/
$ tar tzf backup.tar.gz | head                    # 中身を見るだけ
$ tar xzf backup.tar.gz -C /tmp/restore           # 展開先を指定
$ tar xf node-v22.tar.xz --strip-components=1 -C ~/.local
$ tar xzf backup.tar.gz project/README.md         # 1ファイルだけ取り出す
$ tar czf - dir/ | ssh server 'tar xzf - -C /srv' # ファイルを作らず転送

gzip / gunzip1ファイルを圧縮する

1つのファイルを .gz 形式で圧縮・展開します。ログファイルの圧縮によく使われます。

bash
$ gzip access.log            # access.log.gz に置き換わる
$ gzip -k access.log         # 元のファイルも残す
$ gzip -9 big.sql            # 最大圧縮
$ gunzip access.log.gz
$ zcat access.log.gz | grep 404      # 展開せずに中身を読む
$ zgrep 404 access.log.*.gz

xz / bzip2より小さく圧縮する

gzip より時間はかかりますが、より小さく圧縮できる形式です。

bash
$ xz -T0 -k big.img          # 全CPUコアで圧縮、元も残す
$ unxz big.img.xz
$ xzcat log.xz | less
$ bzip2 -k file.txt          # file.txt.bz2 を作る
$ bunzip2 file.txt.bz2
形式速さ小ささ
gzip速い普通
bzip2遅いやや小さい
xzかなり遅い小さい
zstdとても速い小さい

zip / unzipWindows とのやり取り向け

Windows でもよく使われる .zip を展開・作成します。

bash
$ unzip archive.zip
$ unzip archive.zip -d out/          # 展開先
$ unzip -l archive.zip               # 中身の一覧
$ unzip -O cp932 windows.zip         # Windowsで作った日本語名のzipが文字化けするとき

zipzip を作る

Ubuntu には最初から入っていません。 で入れられます。

フォルダやファイルを zip にまとめます。

bash
$ zip -r site.zip site/ -x '*.git*'
$ zip -e secret.zip file.txt         # パスワード付き

7z7-Zip

Ubuntu には最初から入っていません。 で入れられます。

zip・7z・rar など多くの形式を展開できます。

bash
$ 7z x archive.7z                    # フォルダ構造を保って展開
$ 7z x file.rar -oout/               # 展開先(-o の直後に空白なし)
$ 7z a backup.7z dir/                # 作る
$ 7z a -p secret.7z file.txt         # パスワード付き
$ 7z l archive.zip                   # 中身の一覧

zstd速くてよく縮む

とても速く、しかもよく縮む新しい圧縮形式です。

bash
$ zstd -T0 big.sql                   # big.sql.zst を作る
$ zstd -d big.sql.zst
$ tar --zstd -cf dir.tar.zst dir/