Como criar backups automatizados linux / unix

“Um ponto conserva a tempo nove”, vai um velho ditado. No mundo dos computadores nos referimos a esse ponto como backups. Ao executar uma infra-estrutura de produção de TI, é imperativo que nós alcançar um tempo de atividade em nossos servidores e aplicações de tão perto de cem por cento possível. Embora haja um número de maneiras de fazer uma infra-estrutura de TI sólida, é impossível fazê-lo fracasso prova. Assim, fazemos um plano B.

Servidores são feitas de três amplas camadas - o hardware, o sistema operacional e aplicativos, e os dados. Em caso de uma falha de hardware é bastante simples para substituir a máquina com um novo. Instalar o sistema operacional e aplicativos também são relativamente simples. A parte que é difícil de substituir são os dados e configurações que seus aplicativos usam. Em caso de falha, esta é a parte que não pode ser substituído. Por isso, apoio que os dados em uma base regular. Nós apoiá-la de tal forma que se torna fácil para recuperar em caso de emergência.

Vou guiá-lo através de escrever um script para fazer backups diários em seu sistema. Para este exercício vou usar um servidor que executa o servidor web Apache, um servidor de banco de dados MySQL, e tem um diretório no /casa partição que contém alguns dados que precisa ser feito backup. Iremos também backup de logs de acesso Apache do dia anterior em um diretório de backup separado. Primeiro, precisamos criar um diretório onde os nossos backups residirá. Como parte do exercício Eu criei um diretório chamado CÓPIA DE SEGURANÇA no /optar partição. Vamos organizar os backups nesse diretório para que cada backup dias reside em um diretório formado como este - / Opt / backup / ano / mês / dia /. Então, no dia 11 de agosto de 2008 a backups vai entrar em / Opt / backup / 2008/08/11 /. Vamos criar esses diretórios. Execute o seguinte conjunto de comandos como o raiz do utilizador.

# mkdir -p / opt / backup / DATA / 2008
# cd / opt / backup / DATA / 2008
# mkdir 01 02 03 04 05 06 07 08 09 10 11 12
# cd / opt / backup / DATA /
# cp -r 2008 2009
# cd / opt / backup /
# cp LOG -r DADOS

Veja a nota abaixo antes de emitir este último comando.

# chown -R calvin.calvin / opt / backup

Temos agora dois conjuntos de diretórios de backup - uma para dados e outra para arquivos de log. Com os diretórios backups criados agora estamos prontos para começar a escrever o roteiro. Nota: Eu estou usando o usuário calvin ao longo deste artigo. Por favor, substitua calvin com seu próprio nome de usuário.


################################################## #########
# Código começa AQUI
################################################## #########

#! / Bin / bash

# SERVIDOR V1.0 dados de backup

#########################
# BACKUP CONFIG
#########################

#configure o mês, data e dia
ANO = `date +”% Y”` # 2008
MÊS = `data +”% m”` # 11
DIA = `data +”% d”` # 14
ONTEM = `data -date =” ontem”+% Y% m-% d` # 2008-11-13
YESTERDAY_DATE = `data -date = ontem +% d` # 13
YESTERDAY_MONTH = `date -date = ontem +% m` # 11
YESTERDAY_YEAR = `-date date =% y` ontem + # 2008
HOJE = `data +% Y% m-% d` # 2008-11-14
TODAY_DATE = `data +% d` # 14

# diretórios para backup para
DATA_BACKUP_PARENT_DIR = / opt / backup / DATA / # lt; - Alterar este o seu dir backup de dados
LOG_BACKUP_PARENT_DIR = / opt / backup / LOG / # lt; - Alterar este o seu log de backup dir

Diretório # Apache Document Root
APACHE_DOCROOT = / var / www / html /

# MySQL de configuração de banco de dados
DB_IP ="localhost" # lt; - Altere isso para o IP do seu servidor de banco de dados
DB_USER ="calvin" # lt; - Altere isso para seu nome de usuário do banco de dados
DB_PASS ="calvin_password" # lt; - Altere isso para sua senha de banco de dados
DB_NAME ="lista de clientes" # lt; - Altere isso para o seu nome de banco de dados

# Apache Log Dir
APACHE_LOG_DIR ="/ Var / log / httpd /" # lt; - Altere isso para os dados de caminho de seus logs

# Aplicação Files` Dir
APP_FILES ="/ Home / Calvin / application_files /" # lt; - Altere isso para o caminho do diretório de dados

# Configuração Dir
config_dir ="/ Etc /" # lt; - Altere para o diretório de dados caminho

# Endereço de correio relatório
EMAIL_ID ="[email protected]" # lt; - Altere isso para o seu ID e-mail

################################################## #########
# Backup de dados
################################################## #########



# Criar e entrar em diretório de backup
cd $ DATA_BACKUP_PARENT_DIR / $ ANO / MÊS $
mkdir $ DIA
cd $ DIA

# De backup de banco de dados
mysqldump -h $ {DB_IP} u $ {DB_USER} -p $ {DB_PASS} $ {DB_NAME} gt; $ {DB_NAME} .db
tar -zcvf $ {DB_NAME} .tar.gz $ {DB_NAME} .db
rm -f $ {DB_NAME} .db

# / Backup etc
alcatrão -zcf etc.tar.gz / etc.

de backup # Aplicação
tar -zcf Apache_Doc_Root.tar.gz $ {APACHE_DOCROOT}
tar -zcf App_Files.tar.gz $ {APP_FILES}

################################################## #########
# BACKUP LOG
################################################## #########

# Criar e entrar em diretório de backup
cd $ LOG_BACKUP_PARENT_DIR / $ YESTERDAY_YEAR / $ YESTERDAY_MONTH
mkdir $ YESTERDAY_DATE
cd $ YESTERDAY_DATE

# HTTPD log de backup
for i in $ {APACHE_LOG_DIR} / access_log $ {ONTEM}. * - fazer cp $ i .- done
for i in access_log $ {ONTEM}. * - fazer gzip $ i- done

################################################## #########
# Enviar notificações de correio
################################################## #########

# Correio notificar
du -shc $ DATA_BACKUP_PARENT_DIR / $ ANO / MÊS $ / $ DIA / * | -mail -s “Backup por US $ {hostname} :: DATA feito :)” $ {EMAIL_ID}
du -shc $ LOG_BACKUP_PARENT_DIR / $ YESTERDAY_YEAR / $ YESTERDAY_MONTH / $ YESTERDAY_DATE / * | -mail -s “Backup por US $ {hostname} :: LOG feito :)” $ {EMAIL_ID}

################################################## #########
# Code ends here
################################################## #########

Salve esse script em um diretório como /home/calvin/scripts/backup.sh. Dê permissões executáveis ​​para o arquivo:

# chmod + x /home/calvin/scripts/backup.sh

Agora você está pronto para ir. Execute o script de forma sua linha de comando:

# /home/calvin/scripts/backup.sh

Você também pode adicionar opcionalmente este script como uma tarefa cron para que ele será executado em uma base diária em um momento de sua escolha. Se você deseja executar este script em quatro horas diárias faça o seguinte:

# crontab -e

Criar uma nova linha no arquivo que abre e adicione o seguinte:

0 4 * * * /home/calvin/scripts/backup.sh gt; / Dev / null

Ai está. O servidor irá agora fazer backup de seus dados, banco de dados, arquivos de configuração, aplicação arquivos, e arquivos de log para / Opt / backup todos os dias às 04:00. A coisa inteligente a fazer agora seria para exportar esses backups para um computador remoto para que você não perca seus backups se o servidor enfrenta problemas. Nós vamos cobrir como fazer isso no meu próximo artigo.


Artigos relacionados