Backup Automático em Servidores Linux | DeServ – Info
Lomadee, uma nova espcie na web. A maior plataforma de afiliados da Amrica Latina.

Backup Automático em Servidores Linux

By Flávio Silva

Hoje em um servidor, seja ele web, de arquivos, ou qualquer outro serviço essencial para o dia-a-dia a ele denominado é primordial que um administrador possua alguma rotina de backup imposta sobre o mesmo.

É fato que esse trabalho é crítico pois no mundo da informação o que não queremos é perde-la, pois se isto acontecer poderá colocar os seus negócios no fio da navalha e certamente cabeças irão rolar. 

É complexo colocar nesta postagem um backup que resolva tudo, mas vou colocar e explicar como executar em um servidor web um backup das contas de usuários de sites hospedados e seus respectivos bancos de dados, ainda duplicando o backup efetuado como segurança para outro servidor. É claro que o conteúdo aqui proposto pode ser adaptado por você para executar rotinas de backup expecíficas.

O arquivo em shell script pode ser obtido neste link: backup-shell.sh (11)

Você pode fazer o download e colocar na “crontab” do seu sistema para que o mesmo efetue o backup na hora que melhor lhe convir.

Funcionamento

No início do arquivo shell script do link citado acima, teremos declarações de variaveis de controle do fluxo do programa.

#!/bin/sh
#—————————————————————————
#   backup.sh – Executa backup das pastas “public_html” de cada
#                      usuário da pasta home do sistema.
#
#—————————————————————————
administrator=”root”
mysql_user=”root”
mysql_password=”senha_do_mysql”
dir_backup=”backup”
dir_sites=”sites”
dir_backup_local=$(hostname)
dir_home=”home”
dir_sql=”sql”
dir_web=”public_html”
exclude_list=”ftp user admin lixo”
server_list=”server1.devel server2.devel”
mail_list=”admin@admin.com.br”

O que vemos acima são variaveis de controle, como nome de usuário e senha do mysql, nomes de pastas para o armazenamento dos arquivos e diretórios capturados da origem, lista de exclusão de diretórios que não queremos que seja efetuado o backup e lista de servidores que queremos duplicar o backup ocorrido, ainda temos uma lista de e-mail para informar os responsáveis da ação efetuada pelo nosso backup.

#
# Lista os Bancos disponiveis
#
sql_database=$(mysql -u$mysql_user -hlocalhost -p$mysql_password -Bse
‘SHOW DATABASES WHERE `database`
!= “information_schema” AND `database`
!= “mysql”‘)for db in ${sql_database}; do
mysqldump –databases $db -hlocalhost -u$mysql_user -p$mysql_password –hex-blob > /$dir_home/$dir_sql/$dir_web/sql-$db.sql
done

Neste trecho é gerado uma lista de todos os bancos de dados existentes no Servidor MySQL excluindo as bases de dados da instalação básica do servidor como “information_schema” e “mysql” utilizando o comando “mysql” para efetuar o login e executar a ação.

Com o comando “mysqldump” efetuamos o backup das bases de dados existentes na lista capturada no comando anterior e salvamos a saida do resultado para um arquivo em disco contendo as informaçãoes como criação da base de dados, tabela e inserções de registros.

#————————————————————————————————–
# Inicia o backup
#————————————————————————————————–
for user in ${users}; do
if [ ! -d "/$dir_backup/$dir_sites/$dir_backup_local/$user" ]; then
CreateDir ”/$dir_backup/$dir_sites/$dir_backup_local/$user”
firsync -avz –exclude ’wp-cache’ –exclude \
‘cache’ ”/$dir_home/$user/$dir_web/” \
“/$dir_backup/$dir_sites/$dir_backup_local/$user/”
done

Aqui é executado o backup da pasta public_html de cada usuário existente, repare ainda que na sincronia podemos excluir diretórios utilizando a opção –exclude do comando rsync.

#————————————————————————————————–
# Sincroniza o backup com os servidores da listagem
#————————————————————————————————–
for server in ${server_list}; do
rret=`ssh $administrator@$server \
“mkdir -p /$dir_backup”`
rret=`ssh $administrator@$server \
“mkdir -p /$dir_backup/$dir_sites/”`
rret=`ssh $administrator@$server \
“mkdir -p /$dir_backup/$dir_sites/$dir_backup_local”`log=$(rsync -avz ”/$dir_backup/$dir_sites/$dir_backup_local/” \
“$administrator@$server:
/$dir_backup/$dir_sites/$dir_backup_local/”)
#done

Com a lista de servidor(es) efetuamos um loop e sincronizamos os dados do diretório de backup efetuado com o comando anterior.

#————————————————————————————————–
# Envia para a lista de e-mail informações sobre o backup efetuado.
#————————————————————————————————–
cat << EOF > /tmp/backup-mail.out
Backup e sincronismo entre servidors efetuado as $(date) com sucesso em <$dir_backup_local>\
#————————————————————————————————-
Lista de servidores:$server_list\
#————————————————————————————————-

Lista de sites/usuarios:

$users

\
#————————————————————————————————-
Logs de Sincronismo (rsync)

$log

EOF

#mail -v -s “Backup e Sincronismo de Servidores” $mail_list &lt; /tmp/backup-mail.out

E por fim geramos um arquivo de log com as informações obtidas de cada comando efetuado no backup e enviamos para a lista de e-mail.

Claro que este backup pode ser melhorado e adaptado para outras situações que fogem do escopo desta postagem. A Idéia aqui é dar uma luz para aqueles que não a possui, espero que tenha ajudado.

Fonte:  http://www.nacaolivre.com.br

Nenhum Post Relacionado.

Artigos parecidos fornecidos por Yet Another Related Posts Plugin.

Tags: , , , , , ,

Deixe uma Resposta