[Ubuntu-BR] Batch file: como criá-lo e rodá-lo?

hamacker sirhamacker em gmail.com
Quarta Julho 8 13:56:59 UTC 2015


Ok, te dou um exemplo e você completa o resto, ok?
<------------- inicio do script ------------------->
#!/bin/bash
# Nome do script : backup-all.sh
# Autor : Hamacker (sirhamacker [em] gmail.com)
# Licença : GPL-2
# Função : Script para a realização de backup completo usando rsync
_DATE_START=$(date +%Y-%m-%d+%Hh%M)
_LOG=LOG=/var/log/backup-$_DATE_START.log
echo "Nome: ${0##*/}"| tee "$_LOG"
echo "Caminho: ${0%/*}"| tee -a "$_LOG"
echo "Nome completo: ${0}"  | tee -a "$_LOG"
echo "Argumentos: ${@}"| tee -a "$_LOG"
echo "Log: $_LOG"| tee -a "$_LOG"
echo "Inicio da execução: $_DATE_START"| tee -a "$_LOG"
rsync -Cravzp --delete /origem_1/ /destino_1/ | tee -a "$_LOG"
rsync -Cravzp --delete /origem_2/ /destino_2/ | tee -a "$_LOG"
rsync -Cravzp --delete /origem_3/ /destino_3/ | tee -a "$_LOG"
_DATE_FINISH=$(date +%Y-%m-%d+%Hh%M)
echo "Conclusão da execução: $_DATE_FINISH"| tee -a "$_LOG"
echo "Log foi gerado em $_LOG"

exit 0
<------------- fim do script ------------------->

Dando permissão de execução:
chmod a+x /root/backup-all.sh

Criar um link simbolico no path do sistema ajuda a executá-lo de qualquer
lugar:
ln -s /root/backup-all.sh /usr/bin/backup-all.sh

para executar, digite sudo backup-all.sh de qualquer lugar.


O agendado de tarefas no Linux é na realidade um arquivo texto, mas antes
de editá-lo voce precisa definir o editor de texto de console que melhor
lhe agrada, então execute:
sudo update-alternatives --config editor

O mais fácil na minha opinião é o 'nano', mas se um dia quiser usar um
editor melhor tente o 'vim'.
Depois execute 'crontab -e', sobre o que digitar nesse editor, apenas cole
isso:
<--------------------- crontab ---------------------->
MAILTO=seuemail em dominio.com.br
SHELL=/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
# *    *    *    *    *  comando para executar
# .    .    .    .    .
# .    .    .    .    .
# .    .    .    .    .
# .    .    .    .    ...... dia da semana (0-6) 0=domingo
# .    .    .    ........... mes (1 - 12)
# .    .    ................ dia do mes (1 - 31)
# .    ..................... hora (0 - 23)
# .......................... min (0 - 59)
15 12 * * 1-6 /root/backup-all.sh
00 22 * * 1-6 /root/backup-all.sh
<---------------- fim do crontab ---------------------->
(1) No exemplo acim, seus backups serão agendados para 12:15 e 22:00 de
segunda a sexta.
(2) Não precisa de sudo no agendador porque salvo configuração diferente,
todos os comandos alí são executados com privilégios de root.
(3) Se não quiser ou não tiver meios para enviar email desse host apenas
coloque um remark (#) na frente do MAILTO.
(4) PATH é apenas um exemplo, mas você pode fazer um remark para usar o
default do sistema.

[]´s e boa sorte.



Em 3 de julho de 2015 18:40, Paulo Fernandes <pferna53 em gmail.com> escreveu:

> Prezados,
>
> gostaria de fazer um arquivo batch, a exemplo dos .BAT do DOS, com o
> objetivo de rodar o *rsync*, fazendo cópias de segurança de algumas pastas
> (não todas) previamente escolhidas. Eu teria, assim, uns 3 ou 4 comandos
> rsync nesse arquivo batch, mais ou menos isso:
>
> sudo rsync -Cravzp --delete /origem_1/ /destino_1/
> sudo rsync -Cravzp --delete /origem_2/ /destino_2/
> sudo rsync -Cravzp --delete /origem_3/ /destino_3/
>
> De que mais eu preciso? Onde esse arquivo batch deve ser gravado? Que
> editor eu uso? Pode ser o Gedit? A partir da tela do terminal, o sistema
> conseguirá encontrá-lo e rodá-lo? Algum outro detalhe importante?
>
> Grato desde já!
>
> Paulo Fernandes
> --
> Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece
>
> Lista de discussão Ubuntu Brasil
> Histórico, descadastramento e outras opções:
> https://lists.ubuntu.com/mailman/listinfo/ubuntu-br
>


Mais detalhes sobre a lista de discussão ubuntu-br