トップ «前の日記(2009-04-26) 最新 次の日記(2009-05-01)» 編集

Ussy Diary


2009-04-27

[Firefox][Shell]Firefox の sqlite ファイルに vacuum と reindex を実行するシェルスクリプト

sqlite ファイルがいくつかあり手動で vacuum と reindex を実行すること、拡張によって動的に sqlite ファイルが増えることから、スクリプトにガリガリ手動で登録することが面倒なのですべての sqlite ファイルに対して vacuum と reindex をするシェルスクリプトを書きました。

PROFILE_DIR には自分のプロファイルディレクトリのパスが入ります。また Firefox が起動中の場合、 Firefox が使用している一部の sqlite ファイルにはロックがかかっているためエラーになります。

#!/bin/sh

PROFILE_DIR="/Users/xxxxxxxx/Library/Application Support/Firefox/Profiles/xxxxxxxx.default"
files=`find "$PROFILE_DIR" -name '*.sqlite'`
IFS='
'

for file in $files;do
  echo "execute $file"

  sqlite3 $file vacuum && sqlite3 $file reindex
done

始めは find xargs のワンライナーで決めようと思ったのですが、 && のところをどう書けばいいのか分からなかったのでスクリプトに逃げました。 Mac もパスにスペースが見事に入っているためシェルの for のところで苦労しましたが、おかげで IFS 変数を理解しました。

[追記]

Firefox 終了時に最適化を実行する拡張がありました。

SQLite Optimizer :: Firefox Add-ons