You are on page 1of 2

DESENVOLVIMENTO DO PROGRAMA EM PYTHON

Com um editor de texto de sua preferência, crie um arquivo "backup.py", ou então, utilize um IDE
(Integrated Development Environment) comoEclipse, com plugin Pydev instalado.

Eu vou utilizar o editor VI.

I- Crie uma pasta, onde você deseja armazenar os arquivo de backup, da seguinte forma:

# mkdir /backup

II- Vamos criar o script em Python, com o nome de "backup.py" dentro do diretório que criamos:

# vi /backup/backup.py

Vamos adicionar o seguinte código, no conteúdo do arquivo:

# -*- coding: UTF-8 -*-


#------Importando bibliotecas nativas do python-----
import tarfile #bibliteca capaz de compactar, descompactar arquivos tar, tar.gz, tgz.
from datetime import datetime #biblioteca para trabalhar com data e hora.
import os # biblioteca que permite utilizar comando do sistema operacional
msg = ' ' #Declarando variável para armazenar mensagens que serão gravadas no log.

#------VERIFICANDO O DIA DA SEMANA-----


date = datetime.today() #Verificando data e hora e armazenando em uma variável.
data = date.strftime("%d-%m-%Y %H:%M:%S") #Como o comando acima me retorna uma lista, esse
comando filtra a informação de acordo com o que desejo.
arquivo = date.strftime("%A") #Coletando a informação do dia da semana
#------Tradução------------------------ #Como o retorno do comando [date.strftime("%A") é em inglês, abaixo
criei algumas condições para fazer a tradução do valor que será armazenado na variável "arquivo".
if arquivo == 'Sunday':
arquivo='Domigo'
elif arquivo == 'Monday':
arquivo='Segunda-feira'
elif arquivo == 'Tuesday':
arquivo='Terça-feira'
elif arquivo == 'Wednesday':
arquivo='Quarta-feira'
elif arquivo == 'Thursday':
arquivo='Quinta-feira'
elif arquivo == 'Friday':
arquivo='Sexta-feira'
elif arquivo == 'Saturday':
arquivo='Sábado'
#------CRIANDO ARQUIVO tar.gz--------------
backup = tarfile.open(arquivo+".tar.gz", "w:gz") #Esse comando cria um arquivo tar.gz vazio no
diretório onde esta sendo
#executado o programa. Caso você deseja gravar em outro diretório, é só
#adicionar antes de "arquivo+" o diretório desejado. #Ex: backup tarfile.open(/tmp/arquivo+".tar.gz", "w:gz")
#------COMPACTANDO O BACKUP DO DIA-----
for dir in ['/home/joao','/etc/root','/etc/samba']:
#Aqui tem uma lista onde tem um laço de repetição para varrer toda lista e adicionar o conteudo na
veriável "dir" try: backup.add(dir)
# Adicionando o conteudo do da variável dir no arquivo criando anteriormente até que toda a lista seja
compactada.
except OSError: msg += '%s não encontrado. \n'%dir os.system('rm -rf %s.tar.gz' %arquivo)
backup.close()
#Após adicionar toda a lista estou fechando o arquivo.
#-------ENVIANDO BACKUP PARA O SERVIDOR DE BACKUP SECUNDARIO----
#-------ENVIA VIA SCP OS ARQUIVOS-------------------------------
x=os.system('scp -r %s.tar.gz root@192.168.1.10:/home/backup/' %arquivo)
# Se o arquivo for entre com sucesso o sistema retorna o valor 0,
if x !=0: #então eu gravo na variável "msg" que o mesmo foi entregue com sucesso.
date = datetime.today() msg += 'Não conseguir enviar o arquivo %s.tar.gz para 192.168.1.10. \n'%arquivo
else: date = datetime.today() msg += 'Arquivo %s.tar.gz entregue com sucesso. \n'%arquivo #Por ultimo
gravo toda informação da variável "msg" no arquivo de log
#------------Gravando log----------------------------------------
if msg: open('/var/log/backup.log', 'a').write('['+data +'] - '+ msg)
#---------------------------------FIM--------------------------------------------------------------------

IV- Por fim, salve o arquivo.

CRIANDO SCRIPT EM SHELL


I- Cria o arquivo no diretório desejado:

# vi /backup/auto.bash

II- Conteúdo do arquivo "auto.bash":

#!/bin/bash
cd /backup
/usr/bin/python backup.py

Salva o arquivo.

III- Alterar a permissão do arquivo para executável:

# chmod +x /backup/auto.bash

- Configurando Crontab

I- Execute o comando:

# crontab -e

II- Adicione na última linha, o seguinte comando:

20 20 * * * /backup/auto.bash

Salva o arquivo.

III- Explicando a linha acima:

* --- Minutos
| * --- hora
| | * --- dia do mês
| | | *--- mês
| | | | * --- dia da semana
| | | | | * --- comando a executar--->
||||||
20 20 * * * /backup/auto.bash