Arquivo

Arquivo de julho, 2007

script para backups

Uma das primícias que qualquer desenvolvedor precisa aprender é que o backup é um grande companheiro.

Seja nas horas trágicas em que seu hd queima ou até lhe roubam o laptop ou simplesmente quando você percebe que as ultimas modificações realizadas em determinado projeto ficaram pior que a versão anterior. Nessas horas não tem jeito, recorra ao backup.

Quanto se tem muitos projetos para acompanhar fica ainda mais complicado por isso é comum se utilizar scripts para automatizar esse processo. Entretanto, cada projeto tem suas particularidades de forma que ou você armazena todas as pastas do projeto ou cria um script para cada um.

O script abaixo é bastante simples e tem por diferencial utilizar um arquivo com as configurações para o projeto que se deseja backupear permitindo a personalização do backup e facilitando a manutenção do script.

backup.sh

[as]
#!/bin/bash
############################################
# backup de projetos
# deve ser usado em conjuto com algum arquivo de
# definicoes de backup
# por Paulo Cordeiro (paulo@link3.com.br)
# 20/07/2007
# versao 1.1
############################################
clear

if [ “$#” -eq 0 -o ! -e “$1” ]
then
kdialog –yesno “O arquivo com as definições do backup não existe ou não foi informado. \n Deseja informa-lo agora?”
resposta=$?
if [ “$resposta” = “0” ]
then
defBackup=$(kdialog –getopenfilename “$HOME” \ “*.bkp |Definicoes de Backup”)
if [“$defBackup” == “”]; then exit 2; fi
else
exit 2
fi
else
defBackup=$1
fi

projeto=$(cat $defBackup | grep projetoNome | cut -d “=” -f 2)
descricao=$(cat $defBackup | grep descricao | cut -d “=” -f 2)
fonte=$(cat $defBackup | grep fonte | cut -d “=” -f 2)
destino=$(cat $defBackup | grep destino | cut -d “=” -f 2)
pastasPorData=$(cat $defBackup | grep pastasPorData | cut -d “=” -f 2)
data=$(date +%Y%m%d-%H%M%S)

echo “projeto —> $projetoNome”
includefile=$(mktemp /tmp/$projeto.in.XXXXXX)
excluirfile=$(mktemp /tmp/$projeto.ex.XXXXXX)

echo include = $includefile

if [ “$pastasPorData” == “sim” ]
then
destino=”$destino/$projeto/$(date +%Y)/$(date +%B)/$(date +%d)”
else
destino=$destino/$projeto
fi
backup_name=$destino/$projeto-$data.tar.gz

cd $fonte

echo “===========================================================================================”
echo “Backup do $projeto – $descricao”
echo “===========================================================================================”

for infile in $(sed ‘/incluir-ini/,/incluir-fim/! d; ‘ $defBackup | sed ‘1d;$d’)
do
echo $infile >> $includefile
done

sed ‘/excluir-ini/,/excluir-fim/! d; ‘ $defBackup | sed ‘1d;$d’ > $excluirfile

echo pasta $destino
mkdir “$destino” -p

xterm -e tar -cvzf $backup_name –exclude-from=$excluirfile $(cat $includefile)

echo “===========================================================================================”
echo “Backup gerado em $backup_name”
echo “===========================================================================================”

kdialog –msgbox “Backup gerado em $backup_name”

rm $includefile
rm $excluirfile

exit 0
[/as]

Cada projeto precisa ter um arquivo com as os dados para backup:

projeto1.bkp

[as]
projetoNome=projeto1
descricao=Descricao para o projeto1
fonte=/home/paulo/projetos/projeto1
destino=/backup/projetos/projeto1
pastasPorData=sim

[incluir-ini]
pasta1
pasta2
docs
pasta3
[incluir-fim]

[excluir-ini]
*.exe
*.zip
*.svn
*.class
*.~*
[excluir-fim]
[/as]

a utilização é: backup.sh projeto1.bkp

O script utiliza duas chamadas ao kdialog do KDE que podem ser trocadas pelo xdialog ou simplesmente ser removidas.

Depois explicarei alguns detalhes do script e mostrarei como agendar backup automático para um servidor remoto.

Categories: linux Tags:

ICEFaces, Ajax e JSF 1.2

O pessoal da ICESoft anunciou o release 1.6 do ICEFaces. O ICEFaces é um conjunto de componentes ricos para desenvolvimento web com JSF e AJAX.

Há alguns meses atrás tentei usa-lo em um novo projeto, mas desisti ao perceber que não poderia usa-lo junto com o glassfish. Essa incompatibilidade deve-se ao fato de o glassfish usar o JSF 1.2 por padrão e o ICEFaces a versão 1.1. Agora essa incompatibilidade acaba pois uma das novidades dessa nova versão é justamente a compatibilização com o JSF 1.2. Além desta, outras melhorias foram feitas como integração ao JBoss Seam 1.2.1, Liferay Portal, Webtide Jetty, dentre outras.

Categories: AJAX Tags: