Realizar copias de seguridad con script Bash

15-04-2007 > Miquel Casanovas


Mostrar o escribir comentarios (dudas) sobre este artículo

Sistema:
Linux/Unix/BSD con bash/bash2


Un pequeño script que realiza una copia de seguridad de X carpetas de nuestro servidor. No es un script muy completo pero antes que no tener nada, con este script tendremos respaldos fiables de ficheros y base de datos.

Crearemos un fichero ejecutable por ejemplo en:

> vim /root/copia_seguretat.sh

#!/usr/local/bin/bash
# Ruta de la consola bash. En este caso para FreeBSD

# Directorio done ira a parar la copia de seguridad (recomenadado que sea otro disco o partición)
dfs=/backups

# Nombre del fichero final con fecha de la copia
hora="$(date +"%Y%m%d")"
nf=copia_seguretat_${hora}.tar

#Backup de la base de datos
mysqldump --skip-extended-insert -u root --password="1234" --all-databases > ${dfs}/data_basedades.sql

#Posibles directorios que queremos incluir en el respaldo
dir[1]=/data
dir[2]=/usr/local/etc
dir[3]=/etc
dir[4]=/var/log
dir[5]=/usr/share

#Definimos que directorios queremos incluir en la copia
for index in 1 2 4   #En este caso solo se respaldaran los directorios 1,2,4
do  
    tar cvf ${dfs}/data_${index}.tar ${dir[index]}
done

# ajuntamos los ficheros
tar cvf ${dfs}/${nf} ${dfs}/data_*

# Borramos los temporales
rm -rf ${dfs}/data_*

# Fi
echo "Proceso Finalizado!"


Este script no comprime los ficheros, ya que queremos que se hagan las copias de seguridad muy rápidamente y no cargue la CPU del servidor. Así que sólo adjunta los ficheros. Si queremos que comprima cambiar la linea:
> tar cvf ${dfs}/${nf} ${dfs}/data_* por tar czvf ${dfs}/${nf}.gz ${dfs}/data_*

Finalmente damos permisos de ejecución al script y lo ponemos en el cron del sistema para que las copias se hagan automáticamente cada día a media noche.
> chmod +x /root/copia_seguretat.sh
> crontab -e (con root y añadir)
0 * * * * /root/copia_seguretat.sh (:wq  --> guardar y salir de vim)


NOTA: FreeBSD no trae la consola bash en el sistemas, así que la tenemos que instalar a través de ports (cd /usr/ports/shells/bash2/ y make install clean). Si queremos asignar la consola como predeterminada editar /etc/shells/ y poner la linea de bash en primera posición.

Mostrar o escribir comentarios (dudas) sobre este artículo