De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Carlos Jordão
Data de Publicação: 19 de Fevereiro de 2007
Era uma vez a necessidade de criar backups...
... mas tinha que ser em CD-RW. Sem problemas. Era só usar Xcdroast, ou um outro que gravasse CD. Criar um manual de onde clicar para o usuário fazer seu backup.
Supresa! Nenhum desses programas fôra instalado.
O lance foi criar esse script, que é executado no crontab do usuário. Aqui usamos um programinha chamado zenity, que abre uma telinha de dialog. É possível rodar a partir do cron aplicativos gráficos? É sim, mas é preciso que naquele momento o X esteja rodando (é claro), e que tenha permissão de conexão com ele. O nosso caso é mais simples, porque o usuário que fica o dia inteiro logado na máquina é o mesmo que faz o backup, então é um problema a menos. Basta editar o crontab:
$ crontab -e DISPLAY=":0.0" 0 16 * * * /home/usuario/backup-script.sh
Salve e saia. Isso terá instalado o cron para fazer o backup automático às 16:00 todos os dias. Voltando à escolha do zenity: pode ser outro como o xmessage, mais cru, menos refinado e tão bom quanto (talvez até mais flexível), ou gdialog. Se fosse interface texto, ficaria difícil a execução no cron e a intervenção do usuário. Como teríamos que pedir ao usuário inserir o CD, então, optamos por algo que fosse o mais agradável.
Aqui o difícil foi achar as opções que fizessem funcionar um cd multi-sessão e pudesse ser lido mesmo no windows. Como desconhecíamos quais eram os quesitos mínimos para isso acontecer, fomos testando algumas opções (também nunca tínhamos gravado através do cdrecord). Por isso, talvez esse não seja a melhor forma, mas é a forma que melhor funcionou.
Segue o script:
#!/bin/bash GRAVADOR=/dev/hda DIR_BACKUP=/backup/dir HOME_B=/home/usuario/backup eject /usr/bin/zenity --info --text="Por favor, coloque o CD para o backup\nE em seguida clique no botao" eject -t data=`date '+%d%m%Y-%H%M'` echo "iniciando backup do dia: " $data cd $HOME_B echo "movendo backups anteriores para pasta old" if [ ! -d old ]; then mkdir old fi mv *.tar.gz old/ backup=`echo backup-$data` echo -n "compactando... " tar czf $backup.tar.gz DIR_BACKUP 2>/dev/null echo "[pronto]" echo "Identificando última sessão..." sessao=`cdrecord -msinfo 2>/dev/null` echo "Gerando iso..." rm -f *.iso if [ "X$sessao" == "X" ]; then echo "... em nova sessao." mkisofs -q -iso-level 4 -T -o $backup.iso -R -J $backup.tar.gz else echo "... usando sessao ($sessao)" mkisofs -q -iso-level 4 -T -C $sessao -check-oldnames -dev $GRAVADOR -o $backup.iso -R -J $backup.tar.gz fi echo "Gravando..." cdrecord -multi -eject -tao $backup.iso zenity --info --text "Backup efetuado"
Agora, faltam algumas perfumarias, como detecção automática de espaço para sabermos se o disco que o usuário colocou tem espaço para gravar mais um backup, pedir pra trocar o cd ou apagar (caso seja um CD-RW)... mas isso fica para uma outra vez :)
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários