tarアーカイブ内から、特定キーワードを含むファイルを指定してリストアするUNIX処方箋

現場ですぐに役立つ知識を欲するあなたに贈る珠玉のTips集。今回は、tarコマンドとgrepコマンドを組み合わせた高度なリストア方法を伝授します。

» 2008年08月25日 00時00分 公開
[ITmedia]

バックアップの際、特定ディレクトリをtarコマンドで1つのファイルに固めることでバックアップファイルを作成しています。そしてリストアの際には、いったんすべて展開してから必要なファイルを取得しています。

 しかしこの方法だと、必要なファイルが少数の場合にもすべて展開しなければならず、面倒です。特定ファイルのみ、または特定キーワードでファイルを指定してリストアすることはできないでしょうか?


可能です。tarコマンドとgrepコマンドを組み合わせることで、特定ファイルだけ、あるいは特定キーワードを含むファイル群をリストアできるようになります。

まず、特定のファイルのみであれば、「tar xvf <アーカイブファイル名> <リストアファイル名>」というコマンド指定で特定ファイルをリストアできます。


# tar xvf data.tar ./data/testfile
x ./data/testfile, 9 bytes, 1 テープブロック
# ls -l
合計112
drwxr-xr-x  2 root    other        512 7月19日 19:48 data
-rw-r--r--  1 root    other      56320 7月19日 19:47 data.tar
# cd data ; ls -l
合計2
-rw-r--r--  1 root    other          9 7月19日 19:43 testfile

特定のファイルのみのリストア

 しかし、tarコマンドでは、ファイル名指定にワイルドカードを使用できないため、特定キーワードを指定して展開といったことは難しい状態です。そこで、リスト1のようにtarコマンドの「t」オプションとgrepコマンドを組み合わせることで、特定キーワードを含むファイルを検索し、リストアします(実行例1)

tar xvf <アーカイブファイル名> `tar tf <アーカイブファイル名> | grep '<キーワード>'`

  • 利用しているオプション

x : アーカイブの抽出/復元

t : アーカイブ内のディレクトリ/ファイルの一覧表示

v : 詳細情報の表示(アクセス権などの情報も表示)

f : ファイルを指定する場合(アーカイブファイル、テープデバイス名)


リスト1 tarコマンドの「t」オプションとgrepコマンドを組み合わせ、特定キーワードを含むファイルをリストアする

# tar xvf data.tar `tar tf data.tar |grep 'testfile'`
x ./data/testfile, 9 bytes, 1 テープブロック
x ./data/testfile2, 10 bytes, 1 テープブロック
x ./data/testfile3, 10 bytes, 1 テープブロック
x ./data/testfile4, 10 bytes, 1 テープブロック
x ./data/testfile5, 10 bytes, 1 テープブロック

# ls -l 合計112 drwxr-xr-x  2 root    other        512 7月19日 20:22 data -rw-r--r--  1 root    other      56320 7月19日 19:47 data.tar
# cd data ; ls -l 合計10 -rw-r--r--  1 root    other          9 7月19日19:43 testfile -rw-r--r--  1 root    other         10 7月19日19:43 testfile2 -rw-r--r--  1 root    other         10 7月19日19:43 testfile3 -rw-r--r--  1 root    other         10 7月19日19:43 testfile4 -rw-r--r--  1 root    other         10 7月19日19:44 testfile5
実行例1 特定のキーワードを含むファイル群のリストア

 tarコマンドの「t」オプションを使用し、アーカイブ内のファイル/ディレクトリの一覧をgrepコマンドに渡し、grepコマンドで一覧の中からキーワードを検索します。検索されたファイルは、tarコマンドの「x」オプションによって復元されます。

関連キーワード

UNIX処方箋 | バックアップ | Solaris


Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ