Engineering

【備忘録】ubuntu tarでファイルを圧縮/展開する

  • 作成日:2024年3月31日23:42
  • 更新日:2024年4月7日11:56

tips

ubuntu

Ubuntuのtarコマンドはファイル圧縮の際によく使われるアーカイブユーティリティです。tarファイルやtar.gzファイルなどを扱う場面でよく使いますので備忘録として主要な使い方をまとめます。

man cat
...
NAME
       tar - an archiving utility
...

以下順次更新していきます。
また、以下のファイル構造の環境で確認しています。

demo@demo-01-Ubuntu22:~/ubuntu-commands$ tree .
.
├── demo-01-dir
│   ├── demo-03.txt
│   └── demo-04.txt
├── demo-01.txt
└── demo-02.txt

1 directory, 4 files

実行例1:複数ファイルを指定してtarファイルにまとめる場合

tar cfv <作成するtarファイル名> <アーカイブするファイル名> ... <アーカイブするファイル名>
作成するtarファイル名を指定した後、スペース区切りでアーカイブするファイル名を列挙することでそれらを含めたtarファイルを作成することができます。

# demo-01.txtとdemo-02.txtをアーカイブしてdemo-01.tarファイルを作成する
demo@demo-01-Ubuntu22:~/ubuntu-commands$ tar cfv demo-01.tar demo-01.txt demo-02.txt
demo-01.txt
demo-02.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ll
total 24
drwxrwxr-x  3 demo demo  4096 Apr  6 15:33 ./
drwxr-x--- 10 demo demo  4096 Apr  4 14:02 ../
drwxrwxr-x  2 demo demo  4096 Apr  4 14:02 demo-01-dir/
-rw-rw-r--  1 demo demo 10240 Apr  6 15:33 demo-01.tar
-rw-rw-r--  1 demo demo     0 Apr  4 14:02 demo-01.txt
-rw-rw-r--  1 demo demo     0 Apr  4 14:02 demo-02.txt
# demo-01.tarの内容を確認すると二つのファイルが確認できる
demo@demo-01-Ubuntu22:~/ubuntu-commands$ tar tf demo-01.tar
demo-01.txt
demo-02.txt

実行例2:複数ファイルを指定してtar.gzファイルにまとめる場合

tar cfvz <作成するtarファイル名> <アーカイブするファイル名> ... <アーカイブするファイル名>
基本的には実行例1と同じですが、オプションにzをつけることでtar.gzファイルを作成することができます。
※今回のケースでは自動判別してくれるため、実際にはzオプションは省略可能です。つまり、実行例1の方法でtar.gzファイルも作成可能です。

# demo-01.txtとdemo-02.txtをアーカイブしてdemo-01.tar.gzファイルを作成する
demo@demo-01-Ubuntu22:~/ubuntu-commands$ tar cfvz demo-01.tar.gz demo-01.txt demo-02.txt
demo-01.txt
demo-02.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ll
total 28
drwxrwxr-x  3 demo demo  4096 Apr  6 15:44 ./
drwxr-x--- 10 demo demo  4096 Apr  4 14:02 ../
drwxrwxr-x  2 demo demo  4096 Apr  4 14:02 demo-01-dir/
-rw-rw-r--  1 demo demo 10240 Apr  6 15:43 demo-01.tar
-rw-rw-r--  1 demo demo   136 Apr  6 15:44 demo-01.tar.gz
-rw-rw-r--  1 demo demo     0 Apr  6 15:40 demo-01.txt
-rw-rw-r--  1 demo demo     0 Apr  4 14:02 demo-02.txt
# demo-01.tar.gzの内容を確認すると二つのファイルが確認できる
demo@demo-01-Ubuntu22:~/ubuntu-commands$ tar tf demo-01.tar.gz
demo-01.txt
demo-02.txt

実行例3:tarファイル/tar.gzファイルに含まれるファイルリストを確認する場合

tar ft <tar/tar.gzファイル名>
ftオプションによりtarやtar.gzファイルにどんなファイルがアーカイブされているかを確認することができます。

# ファイルリストを確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ll
total 28
drwxrwxr-x  3 demo demo  4096 Apr  6 15:44 ./
drwxr-x--- 10 demo demo  4096 Apr  4 14:02 ../
drwxrwxr-x  2 demo demo  4096 Apr  4 14:02 demo-01-dir/
-rw-rw-r--  1 demo demo 10240 Apr  6 15:43 demo-01.tar
-rw-rw-r--  1 demo demo   136 Apr  6 15:47 demo-01.tar.gz
-rw-rw-r--  1 demo demo     0 Apr  6 15:40 demo-01.txt
-rw-rw-r--  1 demo demo     0 Apr  4 14:02 demo-02.txt
# ftオプションの後に確認したいtarファイルを指定することで内容を確認できる
demo@demo-01-Ubuntu22:~/ubuntu-commands$ tar ft demo-01.tar
demo-01.txt
demo-02.txt
# tar.gzファイルも同様に確認できる
demo@demo-01-Ubuntu22:~/ubuntu-commands$ tar ft demo-01.tar.gz
demo-01.txt
demo-02.txt

実行例4:ディレクトリを指定してtar/tar.gzファイルにまとめる場合

tar cfv(z) <tar/tar.gzファイル名> <ディレクトリ名>
作成するtarまたはtar.gzファイル名の後にディレクトリを指定するとそのディレクトリごとアーカイブすることができます。
※今回のケースでは自動判別してくれるため、実際にはzオプションは省略可能です。

# ファイルリストを確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ll
total 28
drwxrwxr-x  3 demo demo  4096 Apr  6 15:57 ./
drwxr-x--- 10 demo demo  4096 Apr  4 14:02 ../
drwxrwxr-x  2 demo demo  4096 Apr  4 14:02 demo-01-dir/
-rw-rw-r--  1 demo demo 10240 Apr  6 15:57 demo-01.tar
-rw-rw-r--  1 demo demo   136 Apr  6 15:57 demo-01.tar.gz
-rw-rw-r--  1 demo demo     0 Apr  6 15:40 demo-01.txt
-rw-rw-r--  1 demo demo     0 Apr  4 14:02 demo-02.txt
# demo-01-dirをアーカイブしてtarファイルを作成
demo@demo-01-Ubuntu22:~/ubuntu-commands$ tar cfv demo-01-dir.tar demo-01-dir
demo-01-dir/
demo-01-dir/demo-04.txt
demo-01-dir/demo-03.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ll
total 40
drwxrwxr-x  3 demo demo  4096 Apr  6 16:03 ./
drwxr-x--- 10 demo demo  4096 Apr  4 14:02 ../
drwxrwxr-x  2 demo demo  4096 Apr  4 14:02 demo-01-dir/
-rw-rw-r--  1 demo demo 10240 Apr  6 16:03 demo-01-dir.tar
-rw-rw-r--  1 demo demo 10240 Apr  6 15:57 demo-01.tar
-rw-rw-r--  1 demo demo   136 Apr  6 15:57 demo-01.tar.gz
-rw-rw-r--  1 demo demo     0 Apr  6 15:40 demo-01.txt
-rw-rw-r--  1 demo demo     0 Apr  4 14:02 demo-02.txt
# tarファイルの内容を確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ tar ft demo-01-dir.tar
demo-01-dir/
demo-01-dir/demo-04.txt
demo-01-dir/demo-03.txt
# tar.gzファイルも作成できる
demo@demo-01-Ubuntu22:~/ubuntu-commands$ tar cfvz demo-01-dir.tar.gz demo-01-dir
demo-01-dir/
demo-01-dir/demo-04.txt
demo-01-dir/demo-03.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ll
total 44
drwxrwxr-x  3 demo demo  4096 Apr  6 16:06 ./
drwxr-x--- 10 demo demo  4096 Apr  4 14:02 ../
drwxrwxr-x  2 demo demo  4096 Apr  4 14:02 demo-01-dir/
-rw-rw-r--  1 demo demo 10240 Apr  6 16:03 demo-01-dir.tar
-rw-rw-r--  1 demo demo   158 Apr  6 16:06 demo-01-dir.tar.gz
-rw-rw-r--  1 demo demo 10240 Apr  6 15:57 demo-01.tar
-rw-rw-r--  1 demo demo   136 Apr  6 15:57 demo-01.tar.gz
-rw-rw-r--  1 demo demo     0 Apr  6 15:40 demo-01.txt
-rw-rw-r--  1 demo demo     0 Apr  4 14:02 demo-02.txt
# tar.gzファイルの内容を確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ tar ft demo-01-dir.tar.gz
demo-01-dir/
demo-01-dir/demo-04.txt
demo-01-dir/demo-03.txt

実行例5:tarファイル/tar.gzファイルを作成する際にファイルリストを表示させたくない場合

tar cf(z) <tar/tar.gzファイル名> <ディレクトリ名>
vオプションはアーカイブされるファイルのリストを表示するためのものです。対象のファイル数が少ない場合は便利ですがアーカイブするファイル数が膨大な場合はvオプションを外すことでファイルリストの表示を止めることができます。
※今回のケースでは自動判別してくれるため、実際にはzオプションは省略可能です。

# ファイルリストを確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ll
total 12
drwxrwxr-x  3 demo demo 4096 Apr  6 15:57 ./
drwxr-x--- 10 demo demo 4096 Apr  4 14:02 ../
drwxrwxr-x  2 demo demo 4096 Apr  4 14:02 demo-01-dir/
-rw-rw-r--  1 demo demo    0 Apr  6 15:40 demo-01.txt
-rw-rw-r--  1 demo demo    0 Apr  4 14:02 demo-02.txt
# vオプションなしでtarファイルを作成するとアーカイブされるファイル名は出力されない
demo@demo-01-Ubuntu22:~/ubuntu-commands$ tar cf demo-01.tar demo-01.txt demo-02.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ll
total 24
drwxrwxr-x  3 demo demo  4096 Apr  6 15:57 ./
drwxr-x--- 10 demo demo  4096 Apr  4 14:02 ../
drwxrwxr-x  2 demo demo  4096 Apr  4 14:02 demo-01-dir/
-rw-rw-r--  1 demo demo 10240 Apr  6 15:57 demo-01.tar
-rw-rw-r--  1 demo demo     0 Apr  6 15:40 demo-01.txt
-rw-rw-r--  1 demo demo     0 Apr  4 14:02 demo-02.txt
# tarファイルの内容を確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ tar ft demo-01.tar
demo-01.txt
demo-02.txt
# tar.gzファイルも同様に作成できる
demo@demo-01-Ubuntu22:~/ubuntu-commands$ tar cfz demo-01.tar.gz demo-01.txt demo-02.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ll
total 28
drwxrwxr-x  3 demo demo  4096 Apr  6 15:57 ./
drwxr-x--- 10 demo demo  4096 Apr  4 14:02 ../
drwxrwxr-x  2 demo demo  4096 Apr  4 14:02 demo-01-dir/
-rw-rw-r--  1 demo demo 10240 Apr  6 15:57 demo-01.tar
-rw-rw-r--  1 demo demo   136 Apr  6 15:57 demo-01.tar.gz
-rw-rw-r--  1 demo demo     0 Apr  6 15:40 demo-01.txt
-rw-rw-r--  1 demo demo     0 Apr  4 14:02 demo-02.txt
# tar.gzファイルの内容を確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ tar ft demo-01.tar.gz
demo-01.txt
demo-02.txt

実行例6:tarファイル/tar.gzファイルを展開する場合

tar xf(z) <tar/tar.gzファイル名>
xf(z)オプションで実行することでtarやtar.gzファイルを展開することができます。
※今回のケースでは自動判別してくれるため、実際にはzオプションは省略可能です。

# ファイルリストを確認
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ll
total 44
drwxrwxr-x  3 demo demo  4096 Apr  6 16:34 ./
drwxr-x--- 10 demo demo  4096 Apr  4 14:02 ../
drwxrwxr-x  2 demo demo  4096 Apr  4 14:02 demo-01-dir/
-rw-rw-r--  1 demo demo 10240 Apr  6 16:03 demo-01-dir.tar
-rw-rw-r--  1 demo demo   158 Apr  6 16:06 demo-01-dir.tar.gz
-rw-rw-r--  1 demo demo 10240 Apr  6 15:57 demo-01.tar
-rw-rw-r--  1 demo demo   136 Apr  6 15:57 demo-01.tar.gz
# xオプションでtarファイルの展開ができる
demo@demo-01-Ubuntu22:~/ubuntu-commands$ tar xfv demo-01.tar
demo-01.txt
demo-02.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ll
total 44
drwxrwxr-x  3 demo demo  4096 Apr  6 16:35 ./
drwxr-x--- 10 demo demo  4096 Apr  4 14:02 ../
drwxrwxr-x  2 demo demo  4096 Apr  4 14:02 demo-01-dir/
-rw-rw-r--  1 demo demo 10240 Apr  6 16:03 demo-01-dir.tar
-rw-rw-r--  1 demo demo   158 Apr  6 16:06 demo-01-dir.tar.gz
-rw-rw-r--  1 demo demo 10240 Apr  6 15:57 demo-01.tar
-rw-rw-r--  1 demo demo   136 Apr  6 15:57 demo-01.tar.gz
-rw-rw-r--  1 demo demo     0 Apr  6 15:40 demo-01.txt
-rw-rw-r--  1 demo demo     0 Apr  4 14:02 demo-02.txt
# ファイルリストを確認(demo-01.txt, demo-02.txtを削除しています)
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ll
total 44
drwxrwxr-x  3 demo demo  4096 Apr  6 16:36 ./
drwxr-x--- 10 demo demo  4096 Apr  4 14:02 ../
drwxrwxr-x  2 demo demo  4096 Apr  4 14:02 demo-01-dir/
-rw-rw-r--  1 demo demo 10240 Apr  6 16:03 demo-01-dir.tar
-rw-rw-r--  1 demo demo   158 Apr  6 16:06 demo-01-dir.tar.gz
-rw-rw-r--  1 demo demo 10240 Apr  6 15:57 demo-01.tar
-rw-rw-r--  1 demo demo   136 Apr  6 15:57 demo-01.tar.gz
# tar.gzファイルも同様
demo@demo-01-Ubuntu22:~/ubuntu-commands$ tar xfvz demo-01.tar.gz
demo-01.txt
demo-02.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ll
total 44
drwxrwxr-x  3 demo demo  4096 Apr  6 16:36 ./
drwxr-x--- 10 demo demo  4096 Apr  4 14:02 ../
drwxrwxr-x  2 demo demo  4096 Apr  4 14:02 demo-01-dir/
-rw-rw-r--  1 demo demo 10240 Apr  6 16:03 demo-01-dir.tar
-rw-rw-r--  1 demo demo   158 Apr  6 16:06 demo-01-dir.tar.gz
-rw-rw-r--  1 demo demo 10240 Apr  6 15:57 demo-01.tar
-rw-rw-r--  1 demo demo   136 Apr  6 15:57 demo-01.tar.gz
-rw-rw-r--  1 demo demo     0 Apr  6 15:40 demo-01.txt
-rw-rw-r--  1 demo demo     0 Apr  4 14:02 demo-02.txt
# ファイルリストを確認(demo-01-dirディレクトリを削除しています)
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ll
total 40
drwxrwxr-x  2 demo demo  4096 Apr  6 16:38 ./
drwxr-x--- 10 demo demo  4096 Apr  4 14:02 ../
-rw-rw-r--  1 demo demo 10240 Apr  6 16:03 demo-01-dir.tar
-rw-rw-r--  1 demo demo   158 Apr  6 16:06 demo-01-dir.tar.gz
-rw-rw-r--  1 demo demo 10240 Apr  6 15:57 demo-01.tar
-rw-rw-r--  1 demo demo   136 Apr  6 15:57 demo-01.tar.gz
-rw-rw-r--  1 demo demo     0 Apr  6 15:40 demo-01.txt
-rw-rw-r--  1 demo demo     0 Apr  4 14:02 demo-02.txt
# ディレクトリをアーカイブしたdemo-01-dir.tarファイルを展開
demo@demo-01-Ubuntu22:~/ubuntu-commands$ tar xfv demo-01-dir.tar
demo-01-dir/
demo-01-dir/demo-04.txt
demo-01-dir/demo-03.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ll
total 44
drwxrwxr-x  3 demo demo  4096 Apr  6 16:38 ./
drwxr-x--- 10 demo demo  4096 Apr  4 14:02 ../
drwxrwxr-x  2 demo demo  4096 Apr  4 14:02 demo-01-dir/
-rw-rw-r--  1 demo demo 10240 Apr  6 16:03 demo-01-dir.tar
-rw-rw-r--  1 demo demo   158 Apr  6 16:06 demo-01-dir.tar.gz
-rw-rw-r--  1 demo demo 10240 Apr  6 15:57 demo-01.tar
-rw-rw-r--  1 demo demo   136 Apr  6 15:57 demo-01.tar.gz
-rw-rw-r--  1 demo demo     0 Apr  6 15:40 demo-01.txt
-rw-rw-r--  1 demo demo     0 Apr  4 14:02 demo-02.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ll demo-01-dir
total 8
drwxrwxr-x 2 demo demo 4096 Apr  4 14:02 ./
drwxrwxr-x 3 demo demo 4096 Apr  6 16:38 ../
-rw-rw-r-- 1 demo demo    0 Apr  4 14:02 demo-03.txt
-rw-rw-r-- 1 demo demo    0 Apr  4 14:02 demo-04.txt
# ファイルリストを確認(demo-01-dirディレクトリを削除しています)
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ll
total 40
drwxrwxr-x  2 demo demo  4096 Apr  6 16:38 ./
drwxr-x--- 10 demo demo  4096 Apr  4 14:02 ../
-rw-rw-r--  1 demo demo 10240 Apr  6 16:03 demo-01-dir.tar
-rw-rw-r--  1 demo demo   158 Apr  6 16:06 demo-01-dir.tar.gz
-rw-rw-r--  1 demo demo 10240 Apr  6 15:57 demo-01.tar
-rw-rw-r--  1 demo demo   136 Apr  6 15:57 demo-01.tar.gz
-rw-rw-r--  1 demo demo     0 Apr  6 15:40 demo-01.txt
-rw-rw-r--  1 demo demo     0 Apr  4 14:02 demo-02.txt
# tar.gzファイルも同様
demo@demo-01-Ubuntu22:~/ubuntu-commands$ tar xfvz demo-01-dir.tar.gz
demo-01-dir/
demo-01-dir/demo-04.txt
demo-01-dir/demo-03.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ll
total 44
drwxrwxr-x  3 demo demo  4096 Apr  6 16:38 ./
drwxr-x--- 10 demo demo  4096 Apr  4 14:02 ../
drwxrwxr-x  2 demo demo  4096 Apr  4 14:02 demo-01-dir/
-rw-rw-r--  1 demo demo 10240 Apr  6 16:03 demo-01-dir.tar
-rw-rw-r--  1 demo demo   158 Apr  6 16:06 demo-01-dir.tar.gz
-rw-rw-r--  1 demo demo 10240 Apr  6 15:57 demo-01.tar
-rw-rw-r--  1 demo demo   136 Apr  6 15:57 demo-01.tar.gz
-rw-rw-r--  1 demo demo     0 Apr  6 15:40 demo-01.txt
-rw-rw-r--  1 demo demo     0 Apr  4 14:02 demo-02.txt
demo@demo-01-Ubuntu22:~/ubuntu-commands$ ll demo-01-dir
total 8
drwxrwxr-x 2 demo demo 4096 Apr  4 14:02 ./
drwxrwxr-x 3 demo demo 4096 Apr  6 16:38 ../
-rw-rw-r-- 1 demo demo    0 Apr  4 14:02 demo-03.txt
-rw-rw-r-- 1 demo demo    0 Apr  4 14:02 demo-04.txt




参考文献:
- man tarコマンド
- https://www.gnu.org/software/tar/manual/tar.html
- https://qiita.com/fujieda/items/6c67db36a540b749d7ab