2007年9月24日月曜日

バックアップ時のキャッシュディレクトリの挙動について

 バックアップする時に悩むのが Cache ディレクトリの取扱い。homeディレクトリを丸ごとバックアップしたいときなんて、例えば、firefoxのキャッシュフォルダや、各種画像のサムネイル、テンポラリフォルダなどなど。
 Dar で、~/.darrc に除外したいディレクトリを逐一指定しておくのもいいけれど、 Cache Directory Tagging Standard という仕組みを使えば簡単にキャッシュディレクトリを除外できる。

仕組みは簡単で、キャッシュディレクトリだと認識するディレクトリの中に、CACHEDIR.TAGというファイルを作り、ファイルの中身を、
Signature: 8a477f597d28d172789f06886806bc55
# This file is a cache directory tag created by (application name).
# For information about cache directory tags, see:
# http://www.brynosaurus.com/cachedir/
と書いておけばいい。最初の一行だけで事足りるだろうけど。ようするにキャッシュディレクトリにタグ付けをしておくということですね。

あとは例えばDarならバックアップのさいに、 -, オプションを付ければ CACHEDIR.TAG のあるディレクトリは除外してバックアップしてくれる。
ほかにもtar cpiorsync なども対応しているので、ガンガン利用していきましょう。

いやぁ、linuxってかゆいところに手が届く的な便利さがありますね♪

以下、作業メモ。
find ~/ -iname cache -print | wc
で23個ものcacheディレクトリがあったので、
#!/usr/bin/ruby
#
#

name= "set_cachetag.rb"
tt1 = "Signature: 8a477f597d28d172789f06886806bc55\n" +
"# This file is a cache directory tag created by "
tt2 = "# For information about cache directory tags, see:\n" +
"# http://www.brynosaurus.com/cachedir/ \n"
tagtext = tt1 + name + "\n" + tt2

while gets
if File.directory?($_.chop) then
cpath = $_.chop + "/CACHEDIR.TAG"
unless File.exist?(cpath) then
print $_
tag = File.new(cpath , "w")
tag << tagtext
tag.close
end
end
end
とrubyスクリプトを書いて、
find ~/ -iname cache | ruby set_cachetag.rb
としていっきに CACHEDIR.TAG ファイルを生成した。楽だ♪

0 件のコメント: