月曜日, 7月 20, 2009

tar で特定のファイル/ディレクトリ除外する方法

[概要]
tar コマンドでアーカイブするときに、特定のファイル/ディレクトリを除外する方法を説明しています。

[詳細]
tar コマンドでアーカイブするときに、特定のファイルやディレクトリ(以下まとめてファイル)を除外して、固めたいことがありますが、tar コマンドのオプションだけで実現することが出来ます。
以下はその方法について説明していきます。

  • 除外するファイル名を直接指定する場合
    "--exclude"オプションの後に、除外したいファイル名指定します。

    tar cvf foo.tar ./bar --exclude lost+found

    正規表現も使うことが出来ます。下の例は末尾が".c"と".o"のファイルを除外します。
    tar cvf foo.tar ./bar --exclude *.[c,o]

  • 複数のファイルを除外する場合
    正規表現が使えるので、正確には複数のパターンを除外する場合になりますが、除外するパターンを記述したファイルを用意して、"-X"オプションの後にそのファイルに指定します。
    下記の例は"kernel"と"lib"で始まるファイルと"log"というファイルを除外するための例です。ファイル名は任意です。

    kernel*
    lib*
    log

    上記のファイルをホームディレクトリに"bar.txt"として作成した場合、コマンドの実行は次のようになります。

    tar cvfz foo.tgz ./var -X ~/bar.txt
正規表現とファイルをうまく使って、最適なアーカイブを作成することが出来ます。

0 件のコメント: