Firefox のプロファイルで使用されるsqliteなファイルはどんどん肥大化します。
定期的に reindex/vacuum する必要がありますが、コマンドを打つのは面倒です。
(そういうアドオンもあるんですけどね)
なので、省力化の為にシェルスクリプト/バッチファイルをずいぶん前に書いたので載せておきます。
実行にはそれぞれ sqlite が必要です。
それぞれの環境で動作確認をしていますが、使用する場合は自己責任でお願いします。
#!/bin/bash
## Firefox プロセスが居れば警告して終了
[ "`ps x | grep '[f]irefox'`" ] && echo 'Firefox process exist!!' && exit 1
space=" "
for DATABASE in `find . -regex '.*\.sqlite$'`
do
## 処理前ファイルサイズ
bsize=$(ls -l $DATABASE | cut -d " " -f 5)
size=$(ls -lh $DATABASE | cut -d " " -f 5)
echo -n "optimize $DATABASE ${space:(${#DATABASE}-25)} $size "
sqlite3 $DATABASE REINDEX
sqlite3 $DATABASE VACUUM
#sqlite3 $DATABASE VACUUM ANALYZE
## 処理後ファイルサイズ
asize=$(ls -l $DATABASE | cut -d " " -f 5)
size=$(ls -lh $DATABASE | cut -d " " -f 5)
echo "-> $size ($(expr 100 \* $asize / $bsize ) %)"
done
space=
asize=
bsize=
size=
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
REM Firefox profile 最適化バッチファイルVer.2
for /D %%b in ("%USERPROFILE%\Application Data\Mozilla\Firefox\Profiles\*") do (
rem echo %%b
if exist "%%b\parent.lock" (
echo %%~nxb Firefox is running
) else (
echo Firefox profile %%~nxb optimise
echo.
for %%a in ("%%b\*.sqlite") do (
call set _size=%%~za
sqlite3 "%%a" REINDEX
if not errorlevel 1 (sqlite3 "%%a" VACUUM)
if not errorlevel 1 (
for %%c in ( "%%a" ) do (
echo %%~nxa !_size! -^> %%~zc
)
rem echo %%a !_size! -^> %%~za
)
)
echo.
)
)
for /D %%b in ("%USERPROFILE%\Local Settings\Application Data\Mozilla\Firefox\Profiles\*") do (
rem echo %%b
if exist "%%b\parent.lock" (
echo %%~nxb Firefox is running
) else (
echo Firefox profile %%~nxb urlclassifier3.sqlite optimise
echo.
for %%a in ("%%b\*.sqlite") do (
call set _size=%%~za
sqlite3 "%%a" REINDEX
if not errorlevel 1 (sqlite3 "%%a" VACUUM)
if not errorlevel 1 (
for %%c in ( "%%a" ) do (
echo %%~nxa !_size! -^> %%~zc
)
rem echo %%a !_size! -^> %%~za
)
)
echo.
)
)
echo done.
REM Thunderbird profile 最適化バッチファイルVer.2
for /D %%b in ("%USERPROFILE%\Application Data\Thunderbird\Profiles\*") do (
rem echo %%b
if exist "%%b\parent.lock" (
echo %%~nxb Thunderbird is running
) else (
echo Thunderbird profile %%~nxb optimise
echo.
for %%a in ("%%b\*.sqlite") do (
call set _size=%%~za
sqlite3 "%%a" REINDEX
if not errorlevel 1 (sqlite3 "%%a" VACUUM)
if not errorlevel 1 (
for %%c in ( "%%a" ) do (
echo %%~nxa !_size! -^> %%~zc
)
rem echo %%a !_size! -^> %%~za
)
)
echo.
)
)
echo done.
:qe
pause
endlocal
実行すると各sqliteファイルに reindex/vacuum を行い実行前と実行後のファイルサイズを表示します。