Com um editor de texto de sua preferência, crie um arquivo "backup.py", ou então, utilize um IDE (Integrated Development Environment) como
Eclipse, 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
III- O uso da '#' (cerquilha) representa comentários, parte do código que não é interpretada ou executada (exceto na primeira linha que representa a
interpretação).
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 que estou executando o python.
msg = ' ' #Declarando variável para armazenar mensagens que serão gravadas no log. Podemos notar que em python na
declaração de variável não precisamos passar o tipo de variável.
#------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
Conclusão
Uma linguagem rica, simples e boa de trabalhar. Com potencial de fazer um programa pequeno como este que fiz para backup.
Espero que você goste, tenha curiosidade sobre a linguagem e que eu possa ajudar a você em alguma situação.
Obrigado a todos.