linux

Administra tu servidor Linux como un pro con tareas automatizadas

25 abr. 2018|Lectura de 3 minutos

En este artículo te explico como crear backups automáticos todos los días. Con el mismo proceso puedes automatizar otras tareas.

En nuestro trabajo como DevOps debemos realizar tareas periódicas que nos demandan tiempo. Actualizar el sistema operativo, las aplicaciones, los paquetes instalados, limpiando archivos basura, realizando backups de la información, entre otros.

Muchas operaciones requieren de una revisión / aprobación manual ya que puede ser que no queremos actualizar algún paquete o debemos ver si los archivos que estamos borrando son realmente innecesarios. Pero también existen procesos manuales que podemos automatizar, ya que se deben realizar en una fecha / hora específica y siempre se realizan los mismos pasos. Así que veamos un ejemplo sencillo de cómo automatizar el proceso de realizar backups.

Recomendado: Administración de servidores Linux Desde Cero

Comencemos creando un archivo ejecutable que contenga los comandos para realizar el backup de una base de datos de postgresql. Un archivo ejecutable puede ser un archivo binario o un archivo plano con comandos que deben ejecutarse. Comenzaremos creando un archivo plano llamado backup.sh (en cualquier lugar del sistema de archivos) y en dicho archivo colocaremos lo siguiente:

#!/bin/bash

now=`date +"%Y%m%d_%H%M%N"`
dest="/var/backups/${now}.sql"

pg_dump -d my_data_base -U my_user -w -f $dest

El anterior script creará una copia de la base de datos de my_data_base en la carpeta /var/backups/ con la fecha de hoy.

Ahora vamos a automatizarlo, y para eso utilizaremos CRON que ya viene con los sistemas Linux. Es un administrador de procesos que se ejecutan en determinados intervalos de tiempo que pueden incluso de un minuto (algo espectacular).

Para configurarlo, debemos abrir el archivo /etc/crontab

$ sudo vim /etc/crontab

Este archivo tiene la siguiente estructura:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user	command
17 *	* * *	root    cd / && run-parts --report /etc/cron.hourly
25 6	* * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6	* * 7	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6	1 * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

Recomendado: Aprende Bases de Datos Desde Cero

Para agregar una nueva programación agregaremos una lína con la siguiente estructura:

  1. Minuto (0-59)
  2. Hora (0-23)
  3. Día del mes (1-31)
  4. Mes (1-12)
  5. Día de la semana (0-6) (Donde 0 es domingo)
  6. Usuario con el que quieres ejecutar el comando
  7. Comando a ejecutar

Siguiendo la estructura anterior, vamos a registrar nuestro archivo agregando una línea al final del archivo:

0 23     * * *  root  /ruta/de/tu/backup.sh

Lo que dice esta línea es que en el minuto 0 de las 23 horas de cada día (*), de cada mes (*), todos los días de la semana (*) con el usuario root se va a ejecutar el archivo /ruta/de/tu/backup.sh y puesto que este archivo tiene los comandos para ejecutar una copia de la base de datos, ya tenemos backups automáticos todos los días a las 11pm. 

Ahora ya puedes automatizar tus procesos sin excusas. Cuéntame qué haces tú para automatizar los procesos en Linux o en otros sistemas operativos.