Oi pessoal,
A partir do firefox57 várias extensões deixaram de funcionar. Um delas foi a FEBE (
https://addons.mozilla.org/pt-BR/firefox/addon/febe/ ), que fazia o backup de favoritos,extensões, tema e etc...
O que o script faz:
- comprimi o o perfil completo (7zip)
- necessário
instalar o p7zip-fullsudo apt install p7zip-full
Organiza em pastas:
- salva os arquivos de instalação das extensões com seus nomes
- salva o favoritos e seus backups antigos (bookmarks.html)
- salva o arquivo completo prefs.js
- exporta do prefs.js as configuracões de temas ( usados) e páginas fixadas e sua quantidade (about:newtab )
- salva o arquivo completo favicons.sqlite
- cria um arquivo lista_extensões com as ids e nomes das extensões
- salva o mecanismos de pesquisa
- salva a personalização da barra de ferramentas
- salva as senhas
- salva pastas de dados das extensões
Para o script funcionar você deve habilitar um opçào no firefox e executar o procedimento: digite
about:config na
barra de endereços e localize a configuração abaixo
browser.bookmarks.autoExportHTML
Mude de
false para
true Feche o firefox. Abra-o novamente e feche.
Pronto.
Esta opção faz o backup automático do favoritos toda vez que você fechar o firefox.
Feito isso salve o arquivo em uma pasta ~/backup/firefox e dê a opção de executar para ele.
chmod +x firefox_backup.sh
firefox_backup.sh
#!/bin/bash
# Backup firefox 57 ou superior
# swatquest
# versão 1.07
# Verificando se o firefox está aberto
firefox=`whereis firefox | awk -F" " '{ print $3 }'`
firefox_exec=$(systemd-cgls /user.slice | grep -Fi "$firefox" | grep -vc "grep"
)
if [[ "$firefox_exec" != 0 ]]; then
printf "%s\n" "O firefox está aberto. É recomendado executar este script com firefox fechado."
while read -p "Você quer fechar o firefox? [N/s]" RESPFIREFOX ; do
if [[ $RESPFIREFOX = "" ]]; then
RESPRANK="N"; exit 0;
elif [[ $RESPFIREFOX = [Nn] ]]; then
exit 0;
elif [[ $RESPFIREFOX = [Ss] ]]; then
killall firefox;
sleep 3
break
fi
done
fi
# Criar diretório e acessar
nome_dir=`date +'%F %H.%M.%S'`
mkdir -p "$nome_dir"
cd "$nome_dir"
# Copiar caminho do arquivo do perfil do firefox
perfil=`cat ~/.mozilla/firefox/profiles.ini | grep -i path| awk -F= '{print $2}'`
# Comprimir todo o perfil
printf "%s\n" "Comprimindo perfil completo"
mkdir -p "Perfil_completo"
7z a -t7z -m0=lzma2 -mx=9 -bsp2 -bso0 "Perfil_completo/$perfil.7z" ~/.mozilla/firefox/"$perfil"/
# Backup favoritos
printf "%s\n" "Backup favoritos"
mkdir -p "bookmark_automático"
cp ~/.mozilla/firefox/"$perfil"/bookmarks.html "bookmark_automático"
printf "%s\n" "Backup para pasta de favoritos antigos"
cp -r ~/.mozilla/firefox/"$perfil"/bookmarkbackups "bookmark_automático/bookmarkbackups"
# Backup favicons
printf "%s\n" "Backup favicons"
cp ~/.mozilla/firefox/"$perfil"/favicons.sqlite "favicons.sqlite"
# Backup dos mecanismos de pesquisa
searchpluginsfiles=`ls /usr/lib/firefox/distribution/searchplugins/common/| wc -l`
printf "%s\n" "Backup mecanismos_pesquisa"
if [[ "$searchpluginsfiles" != 0 ]]; then
mkdir -p "mecanismos_pesquisa/usr/lib/firefox/distribution/searchplugins/common"
cp /usr/lib/firefox/distribution/searchplugins/common/* "mecanismos_pesquisa/usr/lib/firefox/distribution/searchplugins/common"
else
mkdir -p "mecanismos_pesquisa"
fi
cp ~/.mozilla/firefox/"$perfil"/search.json.mozlz4 "mecanismos_pesquisa/"
# Personalização da barra de ferramentas
printf "%s\n" "Backup personalização da barra de ferramentas"
mkdir -p "Barra de ferramentas"
cp ~/.mozilla/firefox/"$perfil"/xulstore.json "Barra de ferramentas"/
# Backup de senhas
printf "%s\n" "Backup senhas"
mkdir -p "Senhas"
[[ -e ~/.mozilla/firefox/"$perfil"/logins.json ]] &&
cp ~/.mozilla/firefox/"$perfil"/logins.json "Senhas"/
[[ -e ~/.mozilla/firefox/"$perfil"/key3.db ]] &&
cp ~/.mozilla/firefox/"$perfil"/key3.db "Senhas"/
# Backup arquivo de preferência do usuário prefs.js
mkdir -p "Preferência do usuário/Extraídos"
printf "%s\n" "Backup do arquivo de preferência do usuário"
cp ~/.mozilla/firefox/"$perfil"/prefs.js "Preferência do usuário"/
# Extraindo configurações do prefs.js
printf "%s\n" "Extraindo configurações de temas se existir no prefs.js"
grep -i "lightweightThemes.usedThemes" "Preferência do usuário"/prefs.js > "Preferência do usuário"/Extraídos/Temas
printf "%s\n" "Extraindo configurações de sites fixados se existir da página newtab no prefs.js"
grep -Ei 'browser.newtabpage.activity-stream.topSitesCount|browser.newtabpage.pinned' "Preferência do usuário"/prefs.js > "Preferência do usuário"/Extraídos/newtabpage_fixados
# Copiar arquivos de extensões xpi
dir=`pwd`
home_user=`grep $(whoami) /etc/passwd | awk -F : '{print $6}'`
if [[ -e "$home_user/.mozilla/firefox/"$perfil"/extensions/" ]]; then
cp ~/.mozilla/firefox/"$perfil"/extensions/*.xpi "$dir"
fi
# Copiar arquivo extensions.json do firefox
cp ~/.mozilla/firefox/"$perfil"/extensions.json "$dir"
# Pega a lista de arquivos de extensões
printf "%s\n" "Backup dos arquivos de instalacão das extensões"
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
lista_ext=($(sed 's/:/\n/g' extensions.json | grep -Ei -A1 '"id"|"name"'| grep -vE '"id"|"name"'| awk -F, '{print $1}' | sed 's/\"//g'| grep -v "\--"))
conta=0
mkdir -p extensões
while [ $conta -lt "${#lista_ext[@]}" ]; do
if [[ -e "${lista_ext[$conta]}.xpi" ]]; then
nome_antigo="${lista_ext[$conta]}.xpi"
nome_novo="${lista_ext[$conta+1]}.xpi"
if [[ $nome_novo == *"/"* ]]; then
mv "$nome_antigo" extensões
else
mv "$nome_antigo" "$nome_novo"
mv "$nome_novo" extensões
fi
printf "%s\n%s\n\n" "id:$nome_antigo" "nome:$nome_novo">> lista_extensões
fi
let conta=conta+1
done
# Pela lista de pasta das extensões instaladas
pastas() {
cd "$home_user/.mozilla/firefox/$perfil/browser-extension-data"
conta=0
while [ $conta -lt "${#lista_ext[@]}" ]; do
if [[ -d "${lista_ext[$conta]}" ]]; then
pasta_rem="${lista_ext[$conta]}"
printf "%s\n" "$pasta_rem"
fi
let conta=conta+1
done
}
IFS=$SAVEIFS
# Copia as pastas de dados de extensões instaladas
lista_dir=($(pastas))
mkdir "extensões/browser-extension-data"
browser_extension_data="$home_user/.mozilla/firefox/$perfil/browser-extension-data"
printf "%s\n" "Backup das pastas de dados de extensões instaladas"
for i in "${lista_dir[@]}"; do
cp -r "$browser_extension_data/$i" "extensões/browser-extension-data"
done
# Apagar arquivos criados temporários
rm extensions.json
# Mensagem de contagem do backup
total_ext=`[[ -e lista_extensões ]] && grep -c "id:" lista_extensões || printf 0`
[[ -e lista_extensões ]] && sed -i "1s/^/[[ Foi feito o backup de $total_ext extensões ]]\n\n/" lista_extensões
printf "%s\n" "Fim do backup: salvo na pasta $dir"
exit 0
Testado no Ubuntu e Arch.Tem uma pergunta ao
tentar executá-lo com firefox abertoVocê quer fechar o firefox? [N/s]
O padrão é N ( Não)