“A stitch in time saves nine”, goes an old saying. "Uma pontada no tempo poupa nove", vai um velho ditado. In the world of computers we refer to that stitch as backups. No mundo dos computadores que nos referimos a pontada como backups. When running a production IT infrastructure, it is imperative that we achieve an uptime on our servers and applications of as close to a hundred percent as possible. Ao executar uma produção infra-estruturas TI, é imperativo que alcancemos um uptime em nossos servidores e aplicações de tão perto de cem por cento do possível. While there are a number of ways to make an IT infrastructure solid, it is impossible to make it failure proof. Embora haja uma série de maneiras de fazer uma sólida infra-estrutura informática, é impossível fazer isso falha prova. So we make a plan B. Então vamos fazer um plano B.
Servers are made of three broad layers - the hardware, the operating system and applications, and the data. Servidores são feitas de três amplas camadas - o hardware, sistema operacional e aplicativos, e os dados. In case of a hardware failure it is rather simple to replace the machine with a new one. No caso de uma falha de hardware, é bastante simples para substituir a máquina com um novo. Installing the operating system and applications too are relatively simple. Instalar o sistema operacional e aplicativos também são relativamente simples. The part that is hard to replace is the data and configuration that your applications use. A parte que é difícil de se substituir os dados e configurações que utilizam as suas aplicações. In case of failure this is the part that can not be replaced. Em caso de falha esta é a parte que não possa ser substituído. So we backup that data on a regular basis. Então nós que backup de dados em uma base regular. We back it up in such a way that it becomes easy to retrieve in case of emergency. Nós afastem-se de tal forma que se torna fácil de obter, em caso de emergência.
I will guide you through writing a script to take daily backups on your system. Eu vou te guiar através de um script escrito para ter os backups diários em seu sistema. For this exercise I will use a server that runs the Apache web server, a MySQL database server, and has a directory on the /home partition that contains some data that needs to be backed up. Para este exercício vou usar um servidor que roda o servidor Web Apache, um banco de dados MySQL, e tem um diretório sobre a partição / home que contém alguns dados que precisa de ser acompanhada. We will also backup the previous day’s Apache access logs in a separate backup directory. Iremos também o backup do dia anterior Apache acessar registros em um diretório separado backup. First, we need to create a directory where our backups will reside. Primeiro, precisamos criar um diretório onde irá residir nossos backups. As part of the exercise I have created a directory called BACKUP on the /opt partition. Como parte do exercício eu ter criado um diretório chamado BACKUP sobre o / opt partição. We will organize the backups in this directory so that each days backup resides in a directory formed like this - /opt/BACKUP/YEAR/MONTH/DATE/ . Nós vamos organizar as cópias de segurança neste diretório para que cada dia backup reside em um diretório formado como este - / opt / BACKUP / ANO / MÊS / DIA /. So on the 11th of August 2008 the backups will go into /opt/BACKUP/2008/08/11/ . Então, no dia 11 de agosto de 2008 irá percorrer os backups em / opt/BACKUP/2008/08/11 /. Let’s create these directories. Vamos criar estas listas. Run the following set of commands as the root user. Execute o seguinte conjunto de comandos como o usuário root.
# mkdir -p /opt/backup/DATA/2008 # Mkdir-p / opt/backup/DATA/2008
# cd /opt/backup/DATA/2008 # Cd / opt/backup/DATA/2008
# mkdir 01 02 03 04 05 06 07 08 09 10 11 12 # Mkdir 01 02 03 04 05 06 07 08 09 10 11 12
# cd /opt/backup/DATA/ # Cd / opt / backup / DATA /
# cp -r 2008 2009 # Cp-r 2008 2009
# cd /opt/backup/ # Cd / opt / backup /
# cp -r DATA LOG # Cp-r DADOS DE ACESSO
See note below before issuing this last command. Veja a nota abaixo antes de emitir este último comando.
# chown -R calvin.calvin /opt/backup # Chown-R calvin.calvin / opt / backup
We now have two sets of backup directories - one for data and another for log files. Temos agora dois conjuntos de backup diretórios - um dos dados e outro para arquivos de log. With the backups directories created we are now ready to start writing the script. Note: I’m using the user calvin throughout this article. Com os backups diretórios criada agora estamos prontos para começar a escrever o guião. Nota: Eu estou usando o usuário Calvin em todo o artigo. Please replace calvin with your own username. Por favor substituir Calvin com seu próprio nome de usuário.
########################################################### ################################################## #########
# CODE BEGINS HERE # Código começa aqui
########################################################### ################################################## #########
#!/bin/bash #! / bin / bash
# SERVER DATA BACKUP V1.0 # Servidor de backup de dados v1.0
#########################
# BACKUP CONFIG # BACKUP CONFIG
#########################
#Configure the month, date, and day # Configurar o mês, data e dia
YEAR=`date +”%Y”` # 2008 ANO = `date +"% Y "` # 2008
MONTH=`date +”%m”`# 11 MÊS = `date +"% m "` # 11
DAY=`date +”%d”` # 14 DIA = `date +"% d "` # 14
YESTERDAY=`date –date=”yesterday” +%Y-%m-%d` # 2008-11-13 ONTEM = `data-data =" ontem "+% Y-% m-% d` # 2008-11-13
YESTERDAY_DATE=`date –date=yesterday +%d` # 13 YESTERDAY_DATE = `data-data ontem = +% d` # 13
YESTERDAY_MONTH=`date –date=yesterday +%m` # 11 YESTERDAY_MONTH = `data-data ontem = +% m` # 11
YESTERDAY_YEAR=`date –date=yesterday +%Y` # 2008 YESTERDAY_YEAR = `data-data ontem = +% Y` # 2008
TODAY=`date +%Y-%m-%d` # 2008-11-14 HOJE = `date +% Y-% m-% d` # 2008-11-14
TODAY_DATE=`date +%d` # 14 TODAY_DATE = `date +% d` # 14
# directories to backup to # Diretórios de backup para
DATA_BACKUP_PARENT_DIR=/opt/backup/DATA/ # <-- Change this your data backup dir DATA_BACKUP_PARENT_DIR = / opt / backup / DATA / # <- Alterar esta seus dados backup dir
LOG_BACKUP_PARENT_DIR=/opt/backup/LOG/ # <-- Change this your log backup dir LOG_BACKUP_PARENT_DIR = / opt / backup / LOG / # <- Alterar esse seu login backup dir
# Apache Document Root Directory # Apache documento diretório raiz
APACHE_DOCROOT=/var/www/html/ APACHE_DOCROOT = / var / www / html /
# MySQL Database config Banco de Dados MySQL # config
DB_IP="localhost" # <-- Change this to the IP of your database server DB_IP = "localhost" # <- Altere este valor para o IP do servidor de seu banco de dados
DB_USER="calvin" # <-- Change this to your database username DB_USER = "Calvin" # <- Altere este valor para o seu banco de dados de usuário
DB_PASS="calvin_password" # <-- Change this to your database password DB_PASS = "calvin_password" # <- Altere este valor para o seu banco de dados senha
DB_NAME="clientlist" # <-- Change this to your database name Db_name = "clientlist" # <- Altere este valor para o seu nome do banco de dados
# Apache Log Dir # Apache log dir
APACHE_LOG_DIR="/var/log/httpd/" # <-- Change this to the path data of your logs APACHE_LOG_DIR = "/ var / log / httpd /" # <- Altere este valor para o caminho de dados de seus registros
# Application Files' Dir # Application Files' Dir
APP_FILES="/home/calvin/application_files/" # <-- Change this to the path of the data directory APP_FILES = "/ home / Calvin / application_files /" # <- Altere este valor para o caminho do diretório de dados
# Config Dir # Config Dir
CONFIG_DIR="/etc/" # <-- Change this to the path data directory CONFIG_DIR = "/ etc /" # <- Alterar o caminho para este diretório de dados
# Mail report address # Mail relatório endereço
EMAIL_ID="you@youremailid.com" # <-- Change this to your e-mail ID EMAIL_ID = "you@youremailid.com" # <- Altere este valor para o seu e-mail ID
########################################################### ################################################## #########
# DATA BACKUP # DADOS BACKUP
########################################################### ################################################## #########
# Create and go into backup directory # Criar e entra em backup diretório
cd $DATA_BACKUP_PARENT_DIR/$YEAR/$MONTH cd DATA_BACKUP_PARENT_DIR $ / $ ANO / MÊS $
mkdir $DAY $ mkdir DAY
cd $DAY $ cd DAY
# Database backup # Database backup
mysqldump -h ${DB_IP} -u ${DB_USER} -p${DB_PASS} ${DB_NAME} > ${DB_NAME}.db mysqldump-h $) (DB_IP-u $ (DB_USER-p $) (($ db_name DB_PASS))> $) (db_name. db
tar -zcvf ${DB_NAME}.tar.gz ${DB_NAME}.db tar-zcvf db_name $ (). tar.gz $) (db_name. db
rm -f ${DB_NAME}.db rm-f $) (db_name. db
# /etc backup # / Etc backup
tar -zcf etc.tar.gz /etc tar-zcf etc.tar.gz / etc
# Application backup # Application secundário
tar -zcf Apache_Doc_Root.tar.gz ${APACHE_DOCROOT} tar-zcf Apache_Doc_Root.tar.gz $) (APACHE_DOCROOT
tar -zcf App_Files.tar.gz ${APP_FILES} tar-zcf App_Files.tar.gz $) (APP_FILES
########################################################### ################################################## #########
# LOG BACKUP # BACKUP LOG
########################################################### ################################################## #########
# Create and go into backup directory # Criar e entra em backup diretório
cd $LOG_BACKUP_PARENT_DIR/$YESTERDAY_YEAR/$YESTERDAY_MONTH cd $ LOG_BACKUP_PARENT_DIR / YESTERDAY_YEAR $ / $ YESTERDAY_MONTH
mkdir $YESTERDAY_DATE mkdir $ YESTERDAY_DATE
cd $YESTERDAY_DATE cd $ YESTERDAY_DATE
# HTTPD Log Backup # Httpd log backup
for i in ${APACHE_LOG_DIR}/access_log.${YESTERDAY}*; do cp $i .; done para, em $ (i) APACHE_LOG_DIR / access_log. ONTEM) ($ *; fazer cp $ i.; feito
for i in access_log.${YESTERDAY}*; do gzip $i; done para i no access_log. ONTEM) ($ *; fazer gzip $ i; feito
########################################################### ################################################## #########
# Send out mail notifications # Enviar correio notificações
########################################################### ################################################## #########
# Mail notify # Notificar Mail
du -shc $DATA_BACKUP_PARENT_DIR/$YEAR/$MONTH/$DAY/* | mail -s “Backup for ${HOSTNAME}::DATA done :)” ${EMAIL_ID} SHC-du DATA_BACKUP_PARENT_DIR $ / $ ANO / MÊS $ / $ DIA / * | mail-s "Backup de $) (hostname:: DADOS feito:)" $ () EMAIL_ID
du -shc $LOG_BACKUP_PARENT_DIR/$YESTERDAY_YEAR/$YESTERDAY_MONTH/$YESTERDAY_DATE/* | mail -s “Backup for ${HOSTNAME}::LOG done :)” ${EMAIL_ID} SHC-du LOG_BACKUP_PARENT_DIR $ / $ YESTERDAY_YEAR / YESTERDAY_MONTH $ / $ YESTERDAY_DATE / * | mail-s "Backup de $) (hostname:: LOG feito:)" $ () EMAIL_ID
########################################################### ################################################## #########
# CODE ENDS HERE # Código termina aqui
########################################################### ################################################## #########
Save this script in a directory such as /home/calvin/scripts/backup.sh. Salvar o script em um diretório como / home / Calvin / scripts / backup.sh. Give executable permissions to the file: Dar permissões para o arquivo executável:
# chmod +x /home/calvin/scripts/backup.sh # Chmod + x / home / Calvin / scripts / backup.sh
Now you are good to go. Agora você está pronto. Run the script form your command line: Executar o script formar sua linha de comando:
# /home/calvin/scripts/backup.sh # / Casa / Calvin / scripts / backup.sh
You can also optionally add this script as a cron job so that it will be executed on a daily basis at a time of your choice. Você também pode opcionalmente adicionar este script como um trabalho do cron para que ele será executado em uma base diária, num momento de sua escolha. If you want to run this script at 4 AM daily do the following: Se quiser executar o script em 4 AM diariamente fazer o seguinte:
# crontab -e # Crontab-e
Create a new line in the file that opens and add the following: Criar uma nova linha no arquivo que abre e acrescentar o seguinte:
0 4 * * * /home/calvin/scripts/backup.sh > /dev/null 0 4 * * * / home / Calvin / scripts / backup.sh> / dev / null
There you go. Lá vai você. Your server will now backup your data, database, configuration files, application files, and log files to /opt/backup everyday at 4 AM. Seu servidor vai agora backup dos dados, banco de dados, arquivos de configuração, aplicação arquivos, e arquivos de log para / opt / backup todos os dias às 4 horas da manhã. A smart thing to do now would be to export these backups to a remote machine so that you don’t lose your backups if your server faces problems. Um smart coisa a fazer agora seria a exportar esses backups para uma máquina remota, para que não perca o seu backups se o servidor enfrenta problemas. We will cover how to do that in my next article. Iremos cobrir como fazer isso no meu próximo artigo.






















{ 0 comments… (0 comentários ... add one now adicionar um agora } )
Leave a Comment Deixe um comentário