Desde hace algún tiempo, vengo sincronizando mis marcadores de firefox entre el trabajo y casa mediante dropbox. Para ello, seguí las completas indicaciones de este post del blog mi compañero del Cartolab fpuga. En mi caso, opté por incluir diréctamente el archivo places.sqlite en dropbox, y crear un enlace a éste en su emplazamiento original en la carpeta ~/.mozilla/firefox de mi usuario del navegador.
En general estoy bastante contento con este tip, ya que es bastante cómodo sincronizar de esta manera los enlaces entre diferentes ordenadores. Sin embargo, es frecuente que se produzcan conflictos entre las distintas versiones del archivo places.sqlite.
Los conflictos ocurren porque cada vez que se abre el navegador, el archivo places.sqlite se modifica y si no damos tiempo a dropbox a actualizar la última versión del archivo proveniente de nuestro otro equipo, cuando lo haga, se encontrará con una versión local más reciente que aquella. Dropbox, en este caso no sobreescribirá la última versión remota, sino que la mantendrá añadiendo a su nombre algo como “([HOST] conflicted copy [FECHA])”.

Si vamos acumulando estos archivos, de formato sqlite de acceso no instantáneo con un editor de texto, será difícil observar las diferencias entre las distintas versiones. Para ello encontré muy útil el artículo: “Cómo obtener los bookmarks de firefox 3 desde línea de comandos”, a partir del cual realicé un script para extraer los bookmarks de los archivos sqlite a archivos de texto plano que luego podrán ser comparados mediante un diff/meld para obtener los marcadores añadidos y suprimidos que no hubiesen pasado a la última versión de places.sqlite.
Para extraer un simple archivo sqlite a texto bastaría con hacer lo siguiente:
sqlite3 archivo.sqlite
sqlite> .output archivo_salida.txt
sqlite> select url from moz_bookmarks, moz_places where fk=moz_places.id ;
sqlite> .quit
Para extraer multiples archivos sqlite, el script que comentaba:
#! /bin/bash
# Saca a texto archivos los marcadores almacenados por firefox en archivos sqlite
# Elimino los espacios de los nombres de los archivos generados por defecto
find -type f -name "*.sqlite" -exec rename 's/ /_/g' {} \;
for conffile in $(find -type f -name "*.sqlite" -exec basename {} \;);
do
sqlite3 ${conffile} <<EOF
.output "${conffile}.txt"
select url from moz_bookmarks, moz_places where fk=moz_places.id ;
.quit
EOF
done
Con esto obtenemos archivos de texto plano con los marcadores almacenados por firefox en el archivo places.sqlite y las versiones con conflicto creadas por dropbox.
Sincronizar el perfil o los marcadores de Firefox mediante dropbox – Blog Conocimiento Abierto
Como obtener los bookmarks de firefox 3 desde linea de comandos – Libertad Digital
Usar SQLite desde Shell Script – Ubuntu Life
Ejemplo de script bash con sqlite – http://www.sqlite.org/cvstrac/wiki?p=ShellScript
Hilo “syntax highlight of sqlite3 script using bash here document” – http://www.mail-archive.com/vim_use@googlegroups.com/msg18614.html















