圧縮・アーカイブ
圧縮とアーカイブ
tar・gzip・xz・zip・7z で、ファイルをまとめる・圧縮する・展開する。拡張子ごとの展開コマンド早見表つき。
拡張子ごとの展開コマンド
| 拡張子 | 展開 | 作成 |
|---|---|---|
.tar.gz / .tgz | tar xzf a.tar.gz | tar czf a.tar.gz dir/ |
.tar.xz | tar xJf a.tar.xz | tar cJf a.tar.xz dir/ |
.tar.bz2 | tar xjf a.tar.bz2 | tar cjf a.tar.bz2 dir/ |
.tar.zst | tar --zstd -xf a.tar.zst | tar --zstd -cf a.tar.zst dir/ |
.tar | tar xf a.tar | tar cf a.tar dir/ |
.gz | gunzip a.gz | gzip a |
.xz | unxz a.xz | xz a |
.zip | unzip a.zip | zip -r a.zip dir/ |
.7z | 7z x a.7z | 7z a a.7z dir/ |
tarまとめる・圧縮する・展開する
複数のファイルやフォルダを1つのファイルにまとめたり、.tar.gz などを展開したりする定番のコマンドです。
| オプション | 意味 |
|---|---|
c / x / t | 作る / 展開する / 中身の一覧 |
f <ファイル> | アーカイブのファイル名(最後に書く) |
z / J / j | gzip / xz / bzip2 で圧縮 |
v | 処理したファイルを表示 |
-C <ディレクトリ> | そのディレクトリで作業する(展開先の指定) |
--exclude='<パターン>' | 除外する |
--strip-components=N | 展開するとき、パスの先頭N階層を外す |
$ 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 形式で圧縮・展開します。ログファイルの圧縮によく使われます。
$ 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.*.gzxz / bzip2より小さく圧縮する
gzip より時間はかかりますが、より小さく圧縮できる形式です。
$ 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 を展開・作成します。
$ unzip archive.zip
$ unzip archive.zip -d out/ # 展開先
$ unzip -l archive.zip # 中身の一覧
$ unzip -O cp932 windows.zip # Windowsで作った日本語名のzipが文字化けするときzipzip を作る
Ubuntu には最初から入っていません。 で入れられます。
フォルダやファイルを zip にまとめます。
$ zip -r site.zip site/ -x '*.git*'
$ zip -e secret.zip file.txt # パスワード付き7z7-Zip
Ubuntu には最初から入っていません。 で入れられます。
zip・7z・rar など多くの形式を展開できます。
$ 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速くてよく縮む
とても速く、しかもよく縮む新しい圧縮形式です。
$ zstd -T0 big.sql # big.sql.zst を作る
$ zstd -d big.sql.zst
$ tar --zstd -cf dir.tar.zst dir/