When people have a issue with Firefox I’ve seen many people will resort to deleting their old profile (or folder) and creating a new one. This works but doing this will get rid of any passwords, history, bookmarks… therein. Having used Firefox quite a bit creating a new profile from time to time is a good idea anyhow as cruft, bad extensions, … can slow down browsing.
Manually
Copying the Firefox configs can be done by:
cd ~/.mozilla/firefox/
Backup the old profile and profile list:
mv xxxxxxxx.default{,.bck} mv profiles.ini{,.bck}
Create a new profile:
firefox -CreateProfile <profilename>
This command will return the name of the new folder. Copy the basic settings to the new profile:
cd *.default.bck cp places.sqlite key3.db cookies.sqlite mimeTypes.rdf formhistory.sqlite signons.sqlite permissions.sqlite webappsstore.sqlite persdict.dat content-prefs.sqlite ../*.<profilename>
This will transfer the bookmarks, browsing history, form entries, passwords, personal dictonary changes, and page zooms. There might be a couple other things wanted to add (possibly your firefox preferences), take a look at Transferring data to a new profile for more information.
#!/bin/bash | |
# Create new profile and transfer settings (fixes certain | |
# problems when there are errors in Firefox settings). | |
ffsettingsdir=~/.mozilla/firefox/ | |
# Setting files to restore (files to copy): | |
# (http://kb.mozillazine.org/Transferring_data_to_a_new_profile_-_Firefox) | |
files="content-prefs.sqlite | |
cookies.sqlite | |
formhistory.sqlite | |
key3.db | |
mimeTypes.rdf | |
permissions.sqlite | |
places.sqlite | |
searchplugins | |
signons.sqlite | |
webappsstore.sqlite" | |
# Change to Firefox settings directory | |
if [ -d $ffsettingsdir ] | |
then | |
cd "$ffsettingsdir" | |
else | |
echo " Firefox settings directory "$ffsettingsdir" does not exist" | |
exit | |
fi | |
# Select current profile directory | |
printf "Select current Firefox profile settings directory:\n" | |
select dir_current in */ | |
do | |
test -n "$dir_current" && break | |
echo " Select 1, 2, ..." | |
done | |
# Check that all listed setting files exist | |
for f in $files | |
do | |
if [ ! -e "$dir_current""$f" ] | |
then | |
echo "File "$f" does not exist, exiting." | |
exit | |
fi | |
done | |
# Rename current profile directory | |
mv "${dir_current%/}"{,.bck} | |
dir_old="${dir_current%/}".bck | |
echo "Renamed old profile directory to: "$dir_old"" | |
# Rename profile list file | |
if [ -f profiles.ini ] | |
then | |
mv -f profiles.ini{,.bck} | |
fi | |
# Create new profile | |
read -p "Name of new profile: " nw_prfl_nm | |
firefox -CreateProfile "$nw_prfl_nm" | |
# Select new profile directory | |
printf "Select NEW Firefox profile settings directory:\n" | |
select dir_new in */ | |
do | |
test -n "$dir_new" && break | |
echo " select 1 , 2 ..." | |
done | |
# Copy settings (files) from old profile to new profile | |
cd "$dir_old" | |
for f in $files | |
do | |
cp -a "$f" "$ffsettingsdir"/"$dir_new"/ | |
done | |