0% acharam este documento útil (0 voto)
286 visualizações2 páginas

Script de Backup Automático em Python

Este documento descreve como criar um script em Python e Shell para fazer backup automático de diretórios. O script em Python compacta arquivos em formato tar.gz, envia para um servidor remoto e grava logs. O script Shell agenda a execução do script Python às 20h20 todos os dias usando Crontab.

Enviado por

juanfagner
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
286 visualizações2 páginas

Script de Backup Automático em Python

Este documento descreve como criar um script em Python e Shell para fazer backup automático de diretórios. O script em Python compacta arquivos em formato tar.gz, envia para um servidor remoto e grava logs. O script Shell agenda a execução do script Python às 20h20 todos os dias usando Crontab.

Enviado por

juanfagner
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd

DESENVOLVIMENTO DO PROGRAMA EM PYTHON

Com um editor de texto de sua preferência, crie um arquivo "[Link]", 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 "[Link]" dentro do diretório que criamos:

# vi /backup/[Link]

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, [Link], 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 = [Link]() #Verificando data e hora e armazenando em uma variável.
data = [Link]("%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 = [Link]("%A") #Coletando a informação do dia da semana
#------Tradução------------------------ #Como o retorno do comando [[Link]("%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 [Link]--------------
backup = [Link](arquivo+".[Link]", "w:gz") #Esse comando cria um arquivo [Link] 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 [Link](/tmp/arquivo+".[Link]", "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: [Link](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 [Link]('rm -rf %[Link]' %arquivo)
[Link]()
#Após adicionar toda a lista estou fechando o arquivo.
#-------ENVIANDO BACKUP PARA O SERVIDOR DE BACKUP SECUNDARIO----
#-------ENVIA VIA SCP OS ARQUIVOS-------------------------------
x=[Link]('scp -r %[Link] root@[Link]:/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 = [Link]() msg += 'Não conseguir enviar o arquivo %[Link] para [Link]. \n'%arquivo
else: date = [Link]() msg += 'Arquivo %[Link] 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/[Link]', '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/[Link]

II- Conteúdo do arquivo "[Link]":

#!/bin/bash
cd /backup
/usr/bin/python [Link]

Salva o arquivo.

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

# chmod +x /backup/[Link]

- Configurando Crontab

I- Execute o comando:

# crontab -e

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

20 20 * * * /backup/[Link]

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/[Link]

Você também pode gostar