Você está na página 1de 5

Backup automtico em Shell Script [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=33

Backup automtico em Shell Script


Autor: Perfil removido <fberbert at gmail.com> Data: 21/11/2002 Folder 2 Folder Primeiramente, vamos fazer um simples script que compacta determinada pasta e, logo aps a copia para um diretrio determinado. Este script no requer nenhum programa em especial para trabalhar, ele usar o tar+gzip para compactar o diretrio. Como todos devem saber, todo script em shell deve comear com a seguinte linha: #!/bin/sh ou ento #!/bin/bash No caso, estamos usando bash para criarmos o script. Ento criaremos um arquivo chamado backup_f2f.sh (backup folder to folder, ou backup de pasta para pasta): #!/bin/sh # # Crditos do script, verso, etc. # # Confs do script # Onde, DIR_ORIG o diretrio a ser backupeado e DIR_DEST o # diretrio para onde vai o arquivo compactado e BKP_NAME o nome ao # qual ser compactado o diretrio. DIR_ORIG="/diretorio/a/ser/compactado/" DIR_DEST="/diretorio/a/ser/enviado/o/arquivo" BKP_NAME="nome-do-arquivo.tgz" # compactao do diretrio de origem diretamente no diretrio de destino tar -czpf ${DIR_DEST}${BKP_NAME} ${DIR_ORIG} # mensagem de resultado echo "Seu backup foi realizado com sucesso." echo "Diretrio: ${DIR_ORIG}" echo "Destino: ${DIR_DEST}${BKP_NAME}"; exit 0 Pronto, nosso script isso. Simples no? Com este script fazemos o backup de alguma pasta importante e a jogamos em algum diretrio especfico.

1 de 5

08/08/2009 20:19

Backup automtico em Shell Script [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=33

OBS.: Se o diretrio de destino no existir, o script no conseguira compact-lo nele. Agora, veremos como fazer o backup de uma pasta e envi-la a um servidor de FTP automaticamente.

Folder 2 FTP Agora, como dito anteriormente, faremos um script de backup que pega uma pasta e joga um servidor de FTP automaticamente. Este script no requer nenhum programa em especial para trabalhar, ele usar o tar+gzip para compactar o diretrio e o aplicativo "ftp" para enviar o backup via ftp. Criaremos um script chamado de "backup_f2ftp.sh" (backup folder 2 FTP, ou backup de pasta para FTP): #!/bin/sh # # Crditos do script, verso, etc. # # Confs do script # Onde, DIR_ORIG o diretrio a ser backupeado, BKP_NAME o nome do # arquivo de backup a ser criado, FTP_HOST o endereo do servidor de # FTP e, FTP_USER e FTP_PASS so respectivamente o usuario e a senha a # serem usados para logarmos no servidor de FTP. DIR_ORIG="/diretorio/a/ser/compactado/" BKP_NAME="nome-do-arquivo.tgz" FTP_HOST="ftp.servidor.com.br" FTP_USER="usuario" FTP_PASS="senha" # compactao do diretrio de origem tar -czpf ./${BKP_NAME} ${DIR_ORIG} # envio para o FTP, onde neste caso, abrimos a conexao com o servidor, # deletamos o arquivo de backup ja existente e envia o novo backup para o # diretorio home do usuario do FTP. ftp -in <<EOF open $FTP_HOST user $FTP_USER $FTP_PASS bin hash prompt del $BKP_NAME put $BKP_NAME bye EOF # mensagem de resultado echo "Seu backup foi realizado com sucesso." echo "Diretrio: ${DIR_ORIG}" echo "Destino: ${FTP_HOST}/${BKP_NAME}"; exit 0

2 de 5

08/08/2009 20:19

Backup automtico em Shell Script [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=33

E finalmente est pronto. Nada de complicado no ? Mas algumas pessoas devem estar se perguntando, "Mas e se eu quiser colocar o backup em um diretrio diferente no servidor de FTP?" A resposta muito simples, basta colocar o seguinte comando antes de "del $BKP_NAME": cd diretorio Mas se fizer isto, no esquea depois de colocar o diretrio na linha de resultado onde mostra o destino, pois seno ir aparecer errado, apesar de isso no influenciar em NADA no script. :) E agora, iremos descobrir como fazer um backup de uma pasta especfica, e logo aps monta um diretrio, joga o backup nele e desmonta o diretrio.

Folder 2 MNT Bom, como dito, iremos fazer agora um script que faz o backup de uma pasta, monta um diretrio especfico, joga o arquivo nele e depois desmonta o diretrio. Mas porque isso? Esse tipo de backup muito til quando se trabalha com dados sigilosos, pois pode-se colocar um HD sobressalente em cima de uma maquina e somente mont-lo quando for feito o backup, e logo aps desmont-lo para ficar invisvel a qualquer usurio. Este script no requer nenhum programa em especial para trabalhar, ele usar o tar+gzip para compactar o diretrio e, somente necessita que seu sistema aceite o sistema de arquivos smbfs caso seja usado isso. Bom, vamos comear o script, o chamaremos de "backup_f2mnt.sh" (backup folder 2 MNT, ou backup de pasta para MNT): #!/bin/sh # # Crditos do script, verso, etc. # # Confs do script # Onde, DIR_ORIG o diretrio a ser backupeado, BKP_NAME o nome do # arquivo de backup a ser criado, MNT_DIR o caminho para o diretrio que # ser montado, e, MNT_USER e MNT_PASS so respectivamente o usurio # e a senha a serem usados se montarmos parties SMBFS # e finalmente MNT_SMB define se o diretorio a ser montado SMBFS ou # no (0 para no, 1 para sim) # SMB_WORK o workgroup a ser usado se for montada uma partio smbfs DIR_ORIG="/diretorio/a/ser/compactado/" BKP_NAME="nome-do-arquivo.tgz" MNT_DIR="/dev/hdb5" MNT_USER="usuario" MNT_PASS="senha" MNT_SMB="0" SMB_WORK="workgroup" # compactao do diretrio de origem tar -czpf ./${BKP_NAME} ${DIR_ORIG} # verificando se o diretrio a ser montado SMBFS ou no, montando-o e

3 de 5

08/08/2009 20:19

Backup automtico em Shell Script [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=33

# copiando o arquivo para o diretrio if [ "$MNT_SMB" = "0" ]; then mount ${MNT_DIR} ./mnt cp ./${BKP_NAME} ./mnt else mount -t smbfs -o username=${MNT_USER},password=${MNT_PASS},workgroup=${SMB_WORK} ${SMB_DIR} ./mnt cp ./${BKP_NAME} ./mnt fi # mensagem de resultado echo "Seu backup foi realizado com sucesso." echo "Diretrio: ${DIR_ORIG}" if [ "$MNT_SMB" = "0" ]; then echo "Destino: ${MNT_DIR}" else echo "Destino: ${MNT_DIR} (smbfs)" fi exit 0 E pronto! Esse foi um pouco mais complicado, mas nem tanto, ele s pode ser um pouco falho na questo de ver se o diretrio a ser montado SMBFS se voc for usa-lo como est, pois fiz somente como um exemplo, voc deve adapt-lo ao seu gosto, distinguindo ou no se smbfs. E lembre-se que se no caso for um diretrio SMBFS, coloque o caminho desta forma: //NOMEDAMAQUINA/diretorio/ Para o script conseguir montar corretamente o diretrio.

Agendando os backups Bom, agora iremos agendar os backups. Para isso utilizaremos o utilitrio "cron". Para agendarmos uma tarefa atravs do cron, devemos digitar o seguinte comando no console: # crontab -e ele abrir o editor VI com o arquivo de agendamento do seu usurio. A sintaxe a ser adicionada a seguinte: * * * * * comando a ser executado O significado dos "*" o seguinte: ***** : : : : :-----------> Anos : : : :-------------> Meses : : :---------------> Dias : :-----------------> Horas :-------------------> Minutos O caracter * indica que ser executado sempre.

4 de 5

08/08/2009 20:19

Backup automtico em Shell Script [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=33

Ento se quisermos executar um script todos os dias a 1 da manha colocaremos o seguinte: 0 1 * * * /bin/bash /local/backup_f2f.sh E para quem no familiarizado com o vi, se ficar meio difcil de inserir esta linha, o arquivo para adio da mesma se encontra em /var/spool/cron/crontabs/usuario, podendo ser editada em outro programa, eu mesmo prefiro o joe. Podemos ver que na linha de comando foi colocado /bin/bash /local/backup_f2f.sh Eu nunca testei para ver se funcionava sem colocar o /bin/bash, pois aqui funcionou direto deste modo que eu apresentei. E basicamente isso, quem quiser entender um pouco mais sobre o cron, digite: # man crontab e: # man crond Vamos ao final!

Consideraes Finais Bom pessoal, agora que todos j sabemos como fazer backup de 3 maneiras diferentes, algumas perguntas devem ter surgido e alguns devem estar se perguntando: "Mas e se eu quiser fazer o backup de vrios diretrios?" Bom, para os mais aprofundados na linguagem, isso no deve ser problema, criando um while, for ou de qualquer maneira, jogando o nome dos diretrios em um arquivo texto e lendo linha a linha e fazendo o servio. Mas por enquanto ficaremos somente por aqui, no prximo artigo ensinarei formas mais avanadas de lidar com backups automticos. Espero que tenha ajudado com o que foi mostrado aqui. Se surgirem dvidas, entrem em contato comigo por e-mail no seguinte endereo: mr_crash@gmx.net Os scripts foram testados no Slackware 8.1 com bash 2.05a.0(1)-release Abraos e at a prxima! Felipe Gubert http://www.agatetepe.com.br

http://www.vivaolinux.com.br/artigo/Backup-automatico-em-Shell-Script Voltar para o site

5 de 5

08/08/2009 20:19

Você também pode gostar