digital 千里眼 @abp_jp

アナログな日常とデジタルの接点

Windows 起動時にバッチファイルで Firefox の *.sqlite ファイルを vacuum したり reindex する方法

JavaScript コンソールやアドオン(エクステンション)sqlite ファイルをデフラグするのが流行ってますが、デフラグ時にフリーズする等それなりの欠点があると思っている人いませんか?
それなら良い方法があります(Windows 向け

sqlite 断片化問題
  1. Firefox を使っていると sqlite ファイルに履歴やブックマーク等のデータがどんどん追加され、
  2. そのデータファイル *.sqlite に断片化+ファイルサイズ増が起こり、
  3. ブラウザの動作に深刻な悪影響が出る(起動が遅くなってきたり、反応が鈍くなってきたり)
原始的な解決策:sqlite を手動でデフラグ
sqlite3.exe *.sqlite vacuum
sqlite3.exe *.sqlite reindex

正直、手動では面倒でやる気になれない...

「原始的な解決策」の欠点
  1. Firefox を終了させなくてはならない
  2. ブラウザのプロファイルフォルダに移動しなくてはならない
  3. コマンドの手打ちは嫌だ
  4. etc...

アドオン(エクステンション)を使うとフリーズして不気味だし、何か他に良い手はないか...
⇓ ⇓ ⇓ ⇓ ⇓ ⇓ ⇓ ⇓ ⇓ ⇓

自動化(プロファイル・フォルダの *.sqliteデフラグ

for %%i in (D:\mozilla.org\Firefox\*.sqlite) do (sqlite3.exe %%i vacuum
                                                 sqlite3.exe %%i reindex)

これで sqlite ファイルの断片化問題を忘れることが出来る(毎スタートアップ時に実行するので Firefox を終了させる必要もない)

sqlite の1世代分をデフラグ前にバックアップするには
robocopy "D:\mozilla.org\Firefox" "D:\Backup_Firefox_sqlite" *.sqlite /PURGE /R:1 /W:0 /NS /NC /NFL /NDL /NP