December 14, 2009

Brève de code #4: Mes profils firefox ont disparu

Suite à un manque d'espace disque (disque dur plein), tous mes profils firefox ont disparus.
MaisQu'estCeQueCePasseT'ilDonc ???

Where are passés maille profils?

Un petit tour dans $HOME/.mozilla/firefox. Ouf! ils sont toujours là, mais le fichier profiles.ini - listant les profils et utilisé par le gestionnaire de profils de firefox - est vide.
Explication: firefox réécrit le fichier chaque fois qu'il se termine. D'où disque plein == fichier vide.

Qu'a cela ne tienne, nous allons recréer ce fichier.
Voilà à quoi il doit ressembler (cf http://kb.mozillazine.org/Profiles.ini_file):

[General]
StartWithLastProfile=1

[Profile0]
Name=recherches  
IsRelative=1  
Path=45zef475.recherches

[Profile1].
Name=boulot  
IsRelative=1  
Path=vt3q5s4s.boulot

[Profile2]
Name=devel  
IsRelative=1  
Path=z7iypqm1.devel  

Le vulgus informaticus pecus se serait paluché le fichier à la main, mais nous, fénéant informaticien, allons écrire un script pour le générér (en plus, j'ai autre choses à faire que de me taper mes 32 profils un par un :) ).
Quelques secondes^C^C^Cminutes plus tard, voici le résultat:

#!/bin/bash

export cnt=0;

echo -e "[General]\nStartWithLastProfile=1\n";  
for path in `find $HOME/.mozilla/firefox/ -mindepth 1 -maxdepth 1 -type d ! -name '*Crash*'|sort`; do  
path=${path/*\//};  
name=${path/*\./};  
echo -e "[Profile$cnt]\nName=$name\nIsRelative=1\nPath=$path\n";

cnt=$((cnt+1));  
done  

Exécutez le en redirigant la sortie standard vers le fichier profiles.ini:

$> firefox-profiles.sh > $HOME/.mozilla/firefox/profiles.ini

Une seule chose n'est pas récupérable (sauf à faire jouer votre mémoire): l'ordre initial des profils.