Realizar copias de seguridad con script Bash
15-04-2007 > Miquel CasanovasMostrar 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.
