Algumas vezes precisei instalar ou reinstalar um sistema no intuito de deixá-lo com todos os recursos já conhecidos na instalação anterior ou em outra máquina semelhante.
Então segue o script que faz um backup da lista de programas instalados e gera um executável para realizar a restauração.
Ajuste a linha 5 conforme suas necessidades (local onde gravar o backup).
#!/bin/bash
# backup dos programas instalados
BKP_DIR="/backups/system/dpkg"
BKP_DATE=$(date "+%d-%m-%Y")
BKP_DIR_TMP="$BKP_DIR/ultimo_bkp"
hostname=$(hostname -s)
function backup(){
test ! -d $BKP_DIR && mkdir -p $BKP_DIR
test ! -d $BKP_DIR_TMP && mkdir -p $BKP_DIR_TMP
cd $BKP_DIR_TMP && rm -f $BKP_DIR_TMP/* ;
# Gera o script de restauração (no mesmo diretório do backup).
cat > dpkg-restore.sh << "EOF"
#!/bin/bash
# ============================================================================
dpkg --set-selections < pkg.lst
apt-get update
apt-get dist-upgrade
apt-get dselect-upgrade
apt-get -f install
EOF
chmod +x dpkg-restore.sh
# Gera uma lista com todos os programas instalados e salva no arquivo pkg.lst
dpkg --get-selections -a > pkg.lst
lista=$(ls -t $BKP_DIR_TMP)
# Gera um md5 do script de restauração e da lista de programas para uma posterior análise.
(find $lista -type f -print0 | xargs -0 md5sum > $BKP_DIR_TMP/$hostname-$BKP_DATE.md5) && sync ;
lista2=$(ls -t $BKP_DIR_TMP)
tar -czvf ../$hostname-$BKP_DATE.tgz $lista2
cd $BKP_DIR
# Gera um md5 do backup em formato tar.
md5sum $hostname-$BKP_DATE.tgz > $hostname-$BKP_DATE.tgz.md5
}
backup ;
exit 0
[1] Comentário enviado por evaldoavelar em 26/10/2009 - 12:33h
Script muito interessante!
Mas deve-se tomar cuidado com bakups de arquivos binários, pois se o sistema tiver sido invadido por um cracker, provavelmente ele instalará rootkits colocando backdoors nos arquivos binários.
O melhor momento para se fazer bakups de binários é após a instalação do sistema com a máquina desconectada da rede, sem contato nenhum com o mundo exterior.
[2] Comentário enviado por removido em 26/10/2009 - 14:26h
Olá evaldoavelar,
Concordo com você quando diz "O melhor momento para se fazer bakups de binários é após a instalação do sistema".
Não sei se você entendeu direito o que esse script faz exatamente:
Ele gera uma lista com os nomes dos programas instalados e em seguida gera um shell script para fazer uma atualização do sistema, instalando os programas que fazem parte da lista. Não é gerado backup de nenhum binário. Quando executamos o script gerado pelo backup, o dpkg verifica o que deve ser instalado e em seguida o apt-get faz o update e upgrade utizando o /etc/apt/sources.list original, baixando os pacotes do repositório oficial e não de um backup.
[3] Comentário enviado por guicampos26 em 26/03/2016 - 16:47h
Primeiramente, parabéns pelo artigo. Muito bom.
Tenho uma dúvida. Uso hoje o Ubuntu 14.04 e assim que sair a versão LTS do 16.04 instalarei. Posso usar este script tranquilamente? Ou teria algum problema? Tipo, fazer o backup, formatar com o 16.04 e executar este script. Ou me aconselha a reinstalar um por um dos meus programas?
"O conhecimento é o único bem que quanto mais se compartilha, mais se aumenta. E jamais o tirarão de você".