O ÚNICO site que não é um blog, alojado no blogger. É assim tipo um é pá... um..., um coijo...

terça-feira, fevereiro 03, 2009

Backups à preguiçoso

Provavelmente poucas pessoas irão achar isto útil, portanto aqui vai:

Hoje andei à procura duma forma fácil de fazer backups dos meus websites. Aquilo tem um sistema de gestão bem conhecido, o cPanel. Mas ele obriga a fazer tudo à mão. O problema é que além de ter de me lembrar de fazer backups todos os dias (ou pelo menos de tempos a tempos) ainda por cima já vai em 3 sites e há mais um na calha.

Após uma curta pesquisa, encontrei este tutorial para fazer backups de websites com cPanel usando php mas não gostei (passwords em texto no servidor + requer ir lá buscar o backup à mão + apagar ou ter um servidor ftp para onde enviar o backup).

Portanto, arranjei a minha forma de fazer a coisa, mas com a minha linguagem interpretada favorita: Python!

Aqui vai o código com comentários úteis (mais fáceis de ver num editor com coloração de sintaxe).
Mesmo quem não perceber nada de python deve conseguir costumizar este script. Caso não consiga, pode esconjurar-me à vontade.
Ah, mais uma coisa: isto foi feito para funcionar em linux/unix. Quem estiver a usar o windows que se lixe pode tentar usar o cygwin, uma máquina virtual ou arranjar uma versão do wget para windows.

Para se conseguirem esquecer de vez que fazem backups, basta (mais uma vez, no linux/unix) criar uma tarefa cron para que o computador faça os backups sozinho.

Segue-se o código:


#!/usr/bin/env python

# primeiro, vamos importar uma bibliotecas que precisamos
from os import system
from datetime import date

# vamos buscar a data de hoje...
# porque o nome do ficheiro de backup é feito com a data de hoje
today = date.today()


#------------------------------
# aqui COMEÇAM as configurações
#------------------------------

# aqui vai o IP e porta do alojamento do cpanel
# podem copiar da url que usam para aceder ao cpanel
host = '12.345.67.89:2082'

# aqui é a pasta onde vão ficar os backups
backupsFolder = '/home/eu/backups'

o_meu_site = { # os dados sobre uma das contas
'username' :'o_meu_site',
'domain' :'o_meu_site.algures.pt',
'password' :'a-minha-super-password'}

o_site_do_meu_vizinho = { # os dados de outra conta
'username' :'o_site_do_meu_vizinho',
'domain' :'o_site_do_meu_vizinho.algures.pt',
'password' :'a-super-password-do-meu-vizinho'}

# vamos juntar as contas numa lista para fazer backups de tudo
accounts = [o_meu_site, o_site_do_meu_vizinho]

#-----------------------------
# aqui ACABAM as configurações
#-----------------------------



# ok, agora vamos percorrer a lista de contas
for account in accounts:
# indicamos a pasta de destino do backup
destinationFolder = '%s/%s' % (backupsFolder, account['username'])

# agora vamos ver onde está o backup
remoteURL = 'http://%s:%s@%s' % (account['username'],
account['password'], host)

# e vamos escrever o comando que vai lá buscar as cenas
wget = "wget -P %s %s" % (destinationFolder, remoteURL)

# primeiro vamos buscar o backup da base de dados
dbfile = 'getsqlbackup/%sdb.sql.gz' % account['username']
system("%s/%s"%(wget, dbfile))

#agora vamos buscar o backup da "home directory"
homefile = 'getbackup/backup-%s-%d-%d-%d.tar.gz' % (
account['domain'], today.month, today.day, today.year)
system("%s/%s"%(wget, homefile))

#e pronto, tá feito!

Sem comentários:

Enviar um comentário

eXTReMe Tracker