Pavel Cvrček na svém blogu publikoval informace o tom, jak pročistit databáze Firefoxu a tím jej výrazně urychlit. Vyzkoušel jsem a funguje výborně. Jak na to?
Už před časem jsem se Pavla ‚JasnáPáka‘ Cvrčka ptal, jestli neexistuje nějaký způsob, jak pročistit databáze Firefoxu. Ten od jisté doby ukládá svá data do databáze SQLite, která je určena právě pro takového využití v lokálních aplikacích. Pavel mi tehdy řekl, že o ničem takovém neví.
Firefox do zmíněných databází ukládá ohromné kvantum informací včetně podrobné historie navštívených stránek, záložek a dalších údajů. Uvnitř souborů tak vzniká docela velký zmatek, který by chtělo jednou za čas uklidit. To naštěstí došlo i lidem od Mozilly a do příštích verzí se zřejmě dostane nějaký nástroj, který to bude dělat. Pravděpodobně při aktualizaci.
Naštěstí už teď existuje pohodlná cesta. Balík SQLite totiž nabízí také obslužnou řádkovou utilitu pro správu databází. Postup odkázal na svém blogu Pavel a vy se můžete podívat i na originální návod.
Pokud se nechcete zabývat detaily nebo neumíte anglicky, tady je celý postup zjednodušeně:
0) vypněte Firefox – budete se mu hrabat v databázi
1) Nainstalujte balíček sqlite3
, určitě bude ve vaší distribuci.
2) Navštivte adresář s profilem. Bude ve vašem domovském adresáři v .mozilla/firefox
. Ještě musíte do podadresáře s krkolomným automaticky generovaným názvem.
3) Spusťte v něm následující příkaz:
for z in *.sqlite; do echo "VACUUM;" | sqlite3 "$z"; done
Operace bude trvat několik desítek sekund. Moje databáze (dohromady všechny soubory s příponou .sqlite
) se po akci smrskly z 81 na 60 MB.
Výrazně se tím zrychlil start Firefoxu a navíc jsou hned dostupné všechny informace, jako třeba historie. Dříve bylo potřeba po rozklepnutí menu pár sekund počkat, než se vše načte z disku do paměti a utřídí. Pak teprve se informace objevily. Teď je vše připraveno okamžitě po načtení.
Pokud by se s nim nekdo nechtel psat, pridavam sh skript :) :
echo -n "Mas spusteny Firefox (pokud ano, vypnu jej)? [y/n] "
read answer
if [ "$answer" == "y" ]; then
killall firefox
fi
cd ~/.mozilla/firefox/*.default
for z in `ls *.sqlite`; do echo "VACUUM;" | sqlite3 $z; done
echo "DONE"
/etc/rc.local:
FFUSERS="marek"
if [[ `ps -ef | grep 'firefox' | grep -vc 'grep'` -eq 0 ]]
then
for u in $FFUSERS
do
FFPROFILES=`grep 'Path' /home/"$u"/.mozilla/firefox/profiles.ini | awk -F \= '{ print $2 }'`
for p in $FFPROFILES
do
if [[ -d /home/"$u"/.mozilla/firefox/"$p" ]]
then
echo "Compacting SQLite DB files for user ${u}, profile ${p}..."
cd /home/"$u"/.mozilla/firefox/"$p"
for z in *.sqlite; do echo "VACUUM;" | sqlite3 "$z"; done
fi
done
done
fi
[14]
@FOR %%G IN (*.sqlite) DO ( sqlite3 %%G "VACUUM" )
viz http://www.google.cz/search?q=sqlite+vacuum+windows
[17] http://webupd8.blogspot.com/2009/07/increase-firefox-3-perormance-by.html (sekce -For Windows)
Muj init.d skript, necht si kazdy vybere svuj mene frekventovany den, kdy pousti pocitac. Ja mam nedeli. :-)
$ cat /usr/local/bin/vacuum_firefox_dbs
#!/bin/bash
if [ "$1" = "start" -a `date +%u` = 7 ]; then
echo "Vacuuming Firefox databases on Sunday..."
for db in /home/*/.mozilla/firefox/*/*.sqlite; do
sqlite3 $db 'VACUUM;'
done
fi
Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. GNU/Linuxem a Unixem obecně se zabývá již více než deset let a věnuje se především jeho nasazení v počítačových sítích a bezpečnostní politice. Zde bloguje o Root.cz, Linuxu, internetu a světě kolem sebe.
Přečteno 112 294×
Přečteno 89 772×
Přečteno 73 163×
Přečteno 58 109×
Přečteno 54 435×