【Linux】tarコマンドでアーカイブ化するときに特定のファイル・ディレクトリを除外する。
苦手な納豆を食べる練習をしているfukasawaです。こんにちは。
単体だと普通に食べられるようになってきたのですが、ごはんの上に乗せて食べるのはまだ抵抗があるみたいです。
さて、今回はLinuxのtarコマンドに関する小ネタです。開発環境上のソースコードをtarで固めてローカルに落としてくるときに、画像ファイルやログファイルが含まれると重くなるし除外したいなと思い特定のディレクトリやファイルを除外する方法を調べていました。折角なのでブログのネタとして昇華します。
指定のファイル・ディレクトリを除外する
--excludeオプションを使います。
tar -czvf test01.tgz ./test01 --exclude=logs
「logs」という名前のディレクトリ・ファイルを除外した状態でアーカイブ化( + gzip圧縮)されます。
いろいろな使い方
複数指定
「logs」「tmp」という名前のディレクトリ、ファイルを除外する
tar -czvf test01.tgz ./test01 --exclude=logs --exclude=tmp
ワイルドカードで指定
「log」で始まる名前のディレクトリ、ファイルを除外する
tar -czvf test01.tgz ./test01 --exclude=log*
「XXX.jpg」「XXX.png」「XXX.gif」という名前のディレクトリ、ファイルを除外する (XXX: 任意の文字列)
tar -zcvf test01.tgz ./test01 --exclude=*.{jpg,png,gif}
除外するファイル・ディレクトリをまとめて指定する
--exclude-from, -X オプションを使うと、除外するファイル・ディレクトリの指定をファイルに書いておくことができます。
ファイルに除外する条件を記述します。
excludes
*.log
*.pdf
*.flv
--exclude-from にそのファイルを指定
tar -czvf test01.tgz ./test01 --exclude-from=excludes
「XXX.log」「XXX.pdf」「XXX.flv」という名前のディレクトリ・ファイルを除外した状態でアーカイブ化されます。