Firefoxの起動・終了を速くするために、sqliteデータを再作成・圧縮するというのが流行っている?ようなので、乗ってみる。サイズを小さくするためには一度削除して再作成させるといいのだが、そこはそれ、データが失われるなど難しい。
すっきりしたい場合は、大きくなりがちな places.sqlite をデータを失わずに再作成する解説ページがある。「places.sqlite の再作成 - Firefox Hacks 翻訳日記」http://firefoxhacks.at.webry.info/200902/article_1.html
でもこれ、そのときは小さくなっても、またどうせ大きくなるんだよなあと思うと、定期的にバッチ処理でVacumeするほうが良いのではと思って、「sqlite3 vacume」でググるとぴったりのページがあった。
id:dolphinkick:20090309 「Firefox3のSQLiteファイルを一括してreindex/vacuumするバッチ - 雑木林とコンピュータのメモ帳」
バッチがよくわからないとお書きの通り、スクリプトがこなれてないので、書き直してみた。
- プロファイルディレクトリ名のややこしい文字列はおまかせで
- 10KB以上のファイルだけ対象
- Local Settingsのほうにも、でかいsqliteファイルがあるので対象にする
- vacume前後のファイルサイズをチェック
- バックアップを5世代残す (6世代以前のものを消すのは2009-05-14に追加)
なお、sqlite3.exe は、http://www.sqlite.org/download.html からダウンロード。exeファイル1つだけのパッケージとシンプルなので安心。
@echo off setlocal set TT=%TIME: =0% set DT=%DATE:/=%-%TT:~0,2%%TT:~3,2% set BKDIR=sqlitebackup pushd "%USERPROFILE%" for /d %%D in ("Application Data\Mozilla\Firefox\Profiles\*" "Local Settings\Application Data\Mozilla\Firefox\Profiles\*") do ( pushd %%D if exist parent.lock echo Firefox is on & goto :EOF md %BKDIR% 2>NUL for %%F in (*.sqlite) do call :sub "%%F" popd ) goto :EOF :sub if %~z1 lss 10240 goto :EOF copy %1 %BKDIR%\%~n1-%DT%%~x1 >NUL for /f "skip=5" %%F in ('dir /b /o-n %BKDIR%\%~n1*') do del "%BKDIR%\%%F" dir %1 | findstr /b "20" sqlite3.exe %1 reindex sqlite3.exe %1 vacuum dir %1 | findstr /b "20"