このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Linuxコマンドの基本:アーカイブの展開:tarコマンド

アーカイブの展開:tarコマンド

 tarコマンドは、複数のファイルやディレクトリを一つのアーカイブファイルにまとめるだけでなく、そのアーカイブファイルから元のファイルやディレクトリを取り出すためにも利用されます。ここでは、tarコマンドを使ってアーカイブファイルを展開する方法について解説します。

アーカイブの展開の概要

tarコマンドとは

  • 目的:アーカイブファイルの作成と展開(解凍)を行う。
  • 主な機能:ファイルやディレクトリのバックアップ、移動、配布。

基本的なオプション

オプション意味
xアーカイブの展開(extract)
fファイル名の指定(file)
v詳細情報の表示(verbose)
tアーカイブ内容の一覧表示(list)

練習用ファイルの作成

まず、tarコマンドでアーカイブを展開する練習用のファイルとディレクトリを作成します。

手順

ディレクトリの作成

user01@ubuntu:~$ mkdir dir

ファイルの作成

user01@ubuntu:~$ touch dir/file-{1..9}.txt

結果

dirディレクトリ内に9つのファイルが作成されます。

user01@ubuntu:~$ ls dir
file-1.txt  file-2.txt  file-3.txt  file-4.txt  file-5.txt  file-6.txt
file-7.txt  file-8.txt  file-9.txt

ブレース展開について

  • {1..9}は、Bashのブレース展開という機能を利用しています。
  • 書式{開始値..終了値}
  • 使用例
user01@ubuntu:~$ echo {a..z}.txt
a.txt b.txt c.txt d.txt e.txt f.txt g.txt h.txt i.txt j.txt
k.txt l.txt m.txt n.txt o.txt p.txt q.txt r.txt s.txt t.txt
u.txt v.txt w.txt x.txt y.txt z.txt

    アーカイブファイルの作成

    次に、dirディレクトリをアーカイブファイルにまとめます。

    user01@ubuntu:~$ tar cf dir.tar dir
    • c:アーカイブの作成(create)
    • f:ファイル名の指定(file)

    結果の確認

    user01@ubuntu:~$ ls -l
    合計 60
    drwxrwxr-x 2 user01 user01  4096 11月 24 15:59 bin
    drwxrwxr-x 2 user01 user01  4096 11月 30 03:05 dir
    -rw-rw-r-- 1 user01 user01 10240 11月 30 03:20 dir.tar
    ...(以下省略)...

    dir.tarというアーカイブファイルが作成されました。

    アーカイブの展開

    作成したアーカイブファイルを展開し、元のファイルやディレクトリを取り出します。

    基本書式

    【書式】アーカイブファイルの展開
    tar xf <アーカイブファイル>

    • x:アーカイブの展開(extract)
    • f:ファイル名の指定(file)

    手順

    1.元のディレクトリを削除

    user01@ubuntu:~$ rm -r dir

    2.アーカイブファイルを展開

    user01@ubuntu:~$ tar xf dir.tar

    3.展開結果の確認

    user01@ubuntu:~$ ls dir
    file-1.txt  file-3.txt  file-5.txt  file-7.txt  file-9.txt
    file-2.txt  file-4.txt  file-6.txt  file-8.txt

    注意:アーカイブを展開する前に、同名のファイルやディレクトリが存在すると上書きされてしまう可能性があります。必要に応じてバックアップを取るか、別のディレクトリで展開してください。

    ファイルリストを表示するvオプション

     v(verbose)オプションを使用すると、アーカイブ作成時や展開時に処理されているファイルのリストが表示されます。

    アーカイブ作成時の例

    user01@ubuntu:~$ tar cvf dir.tar dir
    dir/
    dir/file-9.txt
    dir/file-3.txt
    dir/file-5.txt
    dir/file-7.txt
    dir/file-4.txt
    dir/file-6.txt
    dir/file-1.txt
    dir/file-8.txt
    dir/file-2.txt

    アーカイブ展開時の例

    user01@ubuntu:~$ tar xvf dir.tar
    dir/
    dir/file-9.txt
    dir/file-3.txt
    dir/file-5.txt
    dir/file-7.txt
    dir/file-4.txt
    dir/file-6.txt
    dir/file-1.txt
    dir/file-8.txt
    dir/file-2.txt

    ポイント

    • vオプションを付けることで、処理されているファイルが一覧表示されます。
    • しかし、ファイル数が多い場合は出力が多くなり、エラーメッセージが見落とされる可能性があります。

    アーカイブ内容の詳細表示

     tオプションとvオプションを組み合わせると、アーカイブ内のファイルの詳細情報(パーミッション、所有者、サイズ、日時など)を表示できます。

    user01@ubuntu:~$ tar tvf dir.tar
    drwxrwxr-x user01/user01     0 日付 dir/
    -rw-rw-r-- user01/user01     0 日付 dir/file-1.txt
    -rw-rw-r-- user01/user01     0 日付 dir/file-2.txt
    ...(以下省略)...

    ファイル属性の保持

     tarコマンドは、ファイルのパーミッション、所有者、タイムスタンプなどの属性をそのままアーカイブします。

    • 利点:バックアップや移行時に、ファイル属性を維持できる。
    • 注意点:一般ユーザーがtarコマンドを使用すると、所有者やグループ情報の復元が制限される場合があります。

    • rootユーザーが所有するファイルを一般ユーザーが展開すると、所有者は自分(一般ユーザー)になります。
    • 完全なバックアップ・リストアを行う場合は、rootユーザーでtarコマンドを実行する必要があります。

    ここで作成したファイルとディレクトリを削除

    練習用に作成したファイルとディレクトリを削除します。

    コマンド

    user01@ubuntu:~$ rm -r dir
    user01@ubuntu:~$ rm dir.tar

    注意rm -rコマンドはディレクトリとその中の全てのファイルを削除します。重要なデータを削除しないように注意してください。

    まとめ

    • tarコマンドの展開xオプションを使用してアーカイブファイルを展開します。
    • オプションの活用
      x:アーカイブの展開
      v:処理中のファイルを表示(verbose)
      t:アーカイブ内容の一覧表示
    • ファイル属性の保持tarコマンドはファイルのパーミッションや所有者などの属性を維持します。
    • 注意点:アーカイブを展開する際は、同名のファイルが存在しないか確認し、必要に応じてバックアップを取ることが重要です。

     tarコマンドを正しく理解し活用することで、効率的なバックアップやファイルの移行が可能になります。特にシステム管理者にとっては、ファイル属性の保持や権限の管理が重要なポイントとなりますので、十分に注意して操作を行ってください。