“A stitch in time saves nine”, goes an old saying. "Una puntada a tiempo ahorra nueve", va un viejo refrán. In the world of computers we refer to that stitch as backups. En el mundo de las computadoras nos referimos a que, como punto de copias de seguridad. 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. Cuando se ejecuta una infraestructura de TI de producción, es imperativo que logremos un tiempo de actividad en nuestros servidores y aplicaciones de las que cerca de un cien por ciento como sea posible. While there are a number of ways to make an IT infrastructure solid, it is impossible to make it failure proof. Si bien hay un número de maneras de hacer una sólida infraestructura de TI, es imposible no hacer la prueba. So we make a plan B. Por lo tanto, hacer un plan B.
Servers are made of three broad layers - the hardware, the operating system and applications, and the data. Servidores están hechos de tres capas - el hardware, el sistema operativo y las aplicaciones y los datos. In case of a hardware failure it is rather simple to replace the machine with a new one. En el caso de un fallo de hardware es bastante simple para reemplazar la máquina con una nueva. Installing the operating system and applications too are relatively simple. Instalación del sistema operativo y las aplicaciones también son relativamente simples. The part that is hard to replace is the data and configuration that your applications use. La parte que es difícil de reemplazar es la configuración de datos y aplicaciones que su uso. In case of failure this is the part that can not be replaced. En caso de que no se trata de la parte que no puede ser sustituido. So we backup that data on a regular basis. Por lo tanto, que los datos de copia de seguridad sobre una base regular. We back it up in such a way that it becomes easy to retrieve in case of emergency. Tenemos copia de seguridad de tal manera que se convierte en fácil de recuperar en caso de emergencia.
I will guide you through writing a script to take daily backups on your system. Los voy a guiar a través de la escritura una secuencia de comandos para tener copias de seguridad diarias en su 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 ejercicio voy a utilizar un servidor que ejecuta el servidor web Apache, un servidor de base de datos MySQL, y tiene un directorio de la partición / home que contiene algunos datos que debe ser respaldado. We will also backup the previous day’s Apache access logs in a separate backup directory. También la copia de seguridad del día anterior Apache registros de acceso en un directorio de copia de seguridad. First, we need to create a directory where our backups will reside. En primer lugar, tenemos que crear un directorio donde las copias de seguridad de nuestros residentes. As part of the exercise I have created a directory called BACKUP on the /opt partition. Como parte del ejercicio que he creado un directorio llamado copia de seguridad en el / opt partición. 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/ . Vamos a organizar las copias de seguridad en este directorio a fin de que cada día copia de seguridad reside en un directorio formado como este - / opt / backup / año / mes / FECHA /. So on the 11th of August 2008 the backups will go into /opt/BACKUP/2008/08/11/ . Por lo tanto, el 11 de agosto de 2008 las copias de seguridad irá en / opt/BACKUP/2008/08/11 /. Let’s create these directories. Vamos a crear estos directorios. Run the following set of commands as the root user. Ejecute el siguiente conjunto de comandos como usuario 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 de registro de datos
See note below before issuing this last command. Véase la nota a continuación antes de la expedición de 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. Ahora tenemos dos conjuntos de copia de seguridad de los directorios - uno para datos y otra para los archivos de registro. With the backups directories created we are now ready to start writing the script. Note: I’m using the user calvin throughout this article. Con las copias de seguridad de directorios creado ahora estamos listos para empezar a escribir el guión. Nota: estoy usando el usuario calvin a lo largo de este artículo. Please replace calvin with your own username. Por favor, Calvin sustituir con su propio nombre de usuario.
########################################################### ################################################## #########
# CODE BEGINS HERE # Código empieza aquí
########################################################### ################################################## #########
#!/bin/bash #! / bin / bash
# SERVER DATA BACKUP V1.0 # Servidor de copia de seguridad de datos v1.0
#########################
# BACKUP CONFIG # CONFIG BACKUP
#########################
#Configure the month, date, and day # Configure el mes, la fecha y el día
YEAR=`date +”%Y”` # 2008 AÑO = `date +% Y" `# 2008
MONTH=`date +”%m”`# 11 MES = `date +"% m "` # 11
DAY=`date +”%d”` # 14 DIA = `date +"% d "` # 14
YESTERDAY=`date –date=”yesterday” +%Y-%m-%d` # 2008-11-13 AYER = `date-fecha =" ayer "+% Y% m-% d` # 2008-11-13
YESTERDAY_DATE=`date –date=yesterday +%d` # 13 YESTERDAY_DATE = `date-fecha de ayer =% d +» # 13
YESTERDAY_MONTH=`date –date=yesterday +%m` # 11 YESTERDAY_MONTH = `date-fecha de ayer = +% m» # 11
YESTERDAY_YEAR=`date –date=yesterday +%Y` # 2008 YESTERDAY_YEAR = `date-fecha de ayer = +% Y` # 2008
TODAY=`date +%Y-%m-%d` # 2008-11-14 HOY = `date +% Y% m-% d` # 2008-11-14
TODAY_DATE=`date +%d` # 14 TODAY_DATE = `date +% d` # 14
# directories to backup to # Directorios de copia de seguridad
DATA_BACKUP_PARENT_DIR=/opt/backup/DATA/ # <-- Change this your data backup dir DATA_BACKUP_PARENT_DIR = / opt / backup / data / # <- Cambie esta copia de seguridad de sus datos dir
LOG_BACKUP_PARENT_DIR=/opt/backup/LOG/ # <-- Change this your log backup dir LOG_BACKUP_PARENT_DIR = / opt / backup / log / # <- Cambio de registro de esta copia de seguridad de su dir
# Apache Document Root Directory # Apache documento directorio raíz
APACHE_DOCROOT=/var/www/html/ APACHE_DOCROOT = / var / www / html /
# MySQL Database config # Base de datos de configuración de MySQL
DB_IP="localhost" # <-- Change this to the IP of your database server DB_IP = "localhost" # <- Cambio a la IP de su servidor de base de datos
DB_USER="calvin" # <-- Change this to your database username DB_USER = "Calvin" # <- Cambio esta a su base de datos de usuario
DB_PASS="calvin_password" # <-- Change this to your database password DB_PASS = "calvin_password" # <- Cambie esto a su base de datos de la contraseña
DB_NAME="clientlist" # <-- Change this to your database name DB_NAME = "clientlist" # <- Cambio esta a su nombre de base de datos
# Apache Log Dir # Registro de Apache dir
APACHE_LOG_DIR="/var/log/httpd/" # <-- Change this to the path data of your logs APACHE_LOG_DIR = "/ var / log / httpd /" # <- Cambio a la ruta de acceso de datos de sus registros
# Application Files' Dir # Archivos de Aplicación "Dir
APP_FILES="/home/calvin/application_files/" # <-- Change this to the path of the data directory APP_FILES = "/ home / Calvin / application_files /" # <- Cambio a la ruta de acceso del directorio de datos
# Config Dir # Config Dir
CONFIG_DIR="/etc/" # <-- Change this to the path data directory Config_dir = "/ etc /" # <- Cambio a la ruta directorio de datos
# Mail report address # Correo informe de la dirección
EMAIL_ID="you@youremailid.com" # <-- Change this to your e-mail ID EMAIL_ID = "you@youremailid.com" # <- Cambie esto a tu e-mail ID
########################################################### ################################################## #########
# DATA BACKUP # Copia de seguridad de datos
########################################################### ################################################## #########
# Create and go into backup directory # Crear y entrar en el directorio de copia de seguridad
cd $DATA_BACKUP_PARENT_DIR/$YEAR/$MONTH cd $ DATA_BACKUP_PARENT_DIR / AÑO $ / $ MES
mkdir $DAY $ mkdir DÍA
cd $DAY cd $ DÍA
# Database backup # Base de datos de copia de seguridad
mysqldump -h ${DB_IP} -u ${DB_USER} -p${DB_PASS} ${DB_NAME} > ${DB_NAME}.db mysqldump-h DB_IP $ ()-u $ ()-DB_USER $ (p) $ DB_PASS DB_NAME) (> $ () 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 de copia de seguridad
tar -zcf etc.tar.gz /etc tar-zcf etc.tar.gz / etc
# Application backup # Solicitud de copia de seguridad
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 # REGISTRO BACKUP
########################################################### ################################################## #########
# Create and go into backup directory # Crear y entrar en el directorio de copia de seguridad
cd $LOG_BACKUP_PARENT_DIR/$YESTERDAY_YEAR/$YESTERDAY_MONTH LOG_BACKUP_PARENT_DIR cd $ / $ YESTERDAY_YEAR / $ YESTERDAY_MONTH
mkdir $YESTERDAY_DATE $ mkdir YESTERDAY_DATE
cd $YESTERDAY_DATE cd $ YESTERDAY_DATE
# HTTPD Log Backup # Httpd registro de copia de seguridad
for i in ${APACHE_LOG_DIR}/access_log.${YESTERDAY}*; do cp $i .; done i en $ () APACHE_LOG_DIR / access_log. AYER $ () *; do cp $ i.; hacer
for i in access_log.${YESTERDAY}*; do gzip $i; done i en access_log. AYER $ () *; hacer gzip $ i; hacer
########################################################### ################################################## #########
# Send out mail notifications # Enviar notificaciones de correo
########################################################### ################################################## #########
# Mail notify # Correo notificar
du -shc $DATA_BACKUP_PARENT_DIR/$YEAR/$MONTH/$DAY/* | mail -s “Backup for ${HOSTNAME}::DATA done :)” ${EMAIL_ID} du-SHC DATA_BACKUP_PARENT_DIR $ / $ AÑO / MES $ / $ DIA / * | mail-s "Copia de seguridad de $ () HOSTNAME:: DATOS hecho:)" $ () EMAIL_ID
du -shc $LOG_BACKUP_PARENT_DIR/$YESTERDAY_YEAR/$YESTERDAY_MONTH/$YESTERDAY_DATE/* | mail -s “Backup for ${HOSTNAME}::LOG done :)” ${EMAIL_ID} du-SHC LOG_BACKUP_PARENT_DIR $ / $ YESTERDAY_YEAR / YESTERDAY_MONTH $ / $ YESTERDAY_DATE / * | mail-s "Copia de seguridad de $ () HOSTNAME:: LOG hecho:)" $ () EMAIL_ID
########################################################### ################################################## #########
# CODE ENDS HERE # Código termina aquí
########################################################### ################################################## #########
Save this script in a directory such as /home/calvin/scripts/backup.sh. Guardar este script en un directorio como / home / Calvin / scripts / backup.sh. Give executable permissions to the file: Dar permisos de ejecutable al archivo:
# chmod +x /home/calvin/scripts/backup.sh # Chmod + x / home / Calvin / scripts / backup.sh
Now you are good to go. Ahora son buenos para ir. Run the script form your command line: Ejecutar el script de su línea de comandos:
# /home/calvin/scripts/backup.sh # / Home / 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. También puede añadir, opcionalmente, este script como una tarea en el cron para que se ejecute sobre una base diaria en un momento de su elección. If you want to run this script at 4 AM daily do the following: Si desea ejecutar este script a 4 AM diario hacer lo siguiente:
# crontab -e # Crontab-e
Create a new line in the file that opens and add the following: Crear una nueva línea en el archivo que se abre y añadir el texto siguiente:
0 4 * * * /home/calvin/scripts/backup.sh > /dev/null 0 4 * * * / home / Calvin / scripts / backup.sh> / dev / null
There you go. Ahí tienes. Your server will now backup your data, database, configuration files, application files, and log files to /opt/backup everyday at 4 AM. El servidor ahora su copia de seguridad de datos, bases de datos, archivos de configuración, archivos de aplicaciones y archivos de registro a / opt / copia de seguridad todos los días a las 4 AM. 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. Una cosa inteligente a hacer ahora sería para exportar estas copias de seguridad a una máquina remota para que no pierdan sus copias de seguridad de su servidor si se enfrenta a problemas. We will cover how to do that in my next article. Vamos a cubrir cómo hacer que en mi próximo artículo.






















{ 0 comments… (0 comentarios ... add one now añadir ahora una } )
Leave a Comment Déjanos tu comentario