Created
December 13, 2018 00:50
-
-
Save evaristorivi/8541e35a254aba5d99303ce2ae8bbb5f to your computer and use it in GitHub Desktop.
DVD Backup Script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
#Autor: Evaristo R. Rivieccio Vega | |
#Configuración General | |
############################## | |
############################### | |
#Directorio de backup | |
directorioback="/root/backups" | |
############################### | |
#Nombre archivo .tar | |
nombretar="$directorioback/$(date +%d-%m-%y).tar.gz" | |
############################### | |
#Nombre de directorio a copiar | |
directorioacopiar="/home" | |
#Ubicación del fichero de log | |
flog="/var/log/backup.log" | |
#Configuración para rsyslog | |
varlocal="local0.*" | |
############################### | |
############################### | |
############################### | |
#--------------------------------------------------------------------- | |
#Comprobación root | |
if [ ! $(whoami) = "root" ];then | |
echo | |
echo "Ejecute este script como root" | |
echo | |
exit 1 | |
fi | |
#Comprobación: Sistema de log | |
reiniciar=null | |
if [ ! -f $flog ];then | |
touch $flog | |
chmod 600 $flog | |
chown syslog:adm $flog | |
echo "Fichero de log creado correctamente en $flog" | |
reiniciar=ok | |
fi | |
grep $flog /etc/rsyslog.d/50-default.conf > /dev/null 2>/dev/null | |
if [ ! $? -eq 0 ];then | |
echo "$varlocal $flog " >> /etc/rsyslog.d/50-default.conf | |
reiniciar=ok | |
fi | |
#Comprobación: Utilidad de grabado en DVD | |
if [ $reiniciar = "ok" ];then | |
systemctl restart rsyslog | |
mensaje="systemctl ha sido reiniciado - Comienza el registro de logs para este script" | |
logger -p local0.notice -t NOTICIA: $mensaje | |
echo $mensaje | |
fi | |
growisofs > /dev/null 2>/dev/null | |
if [ $? -eq 127 ];then | |
echo | |
mensaje="growisoft no detectado, instalando..." | |
logger -p local0.alert -t ALERTA: $mensaje | |
echo $mensaje | |
apt install growisofs > /dev/null 2>/dev/null | |
mensaje="growisofs instalado" | |
logger -p local0.notice -t NOTICIA: $mensaje | |
echo $mensaje | |
fi | |
#Comprobación: Directorio para los backups | |
if [ ! -d "$directorioback" ];then | |
echo | |
mensaje="No existe directorio para el backup" | |
logger -p local0.alert -t ALERTA: $mensaje | |
echo $mensaje | |
mkdir "$directorioback" | |
if [ $? -eq 0 ];then | |
mensaje="Directorio para backups creado en "$directorioback"" | |
logger -p local0.notice -t NOTICIA: $mensaje | |
echo $mensaje | |
else | |
mensaje="No se puede crear el directorio "$directorioback"" | |
logger -p local0.error -t ERROR: $mensaje | |
echo $mensaje | |
exit 1 | |
fi | |
fi | |
#Comprobación: Usuarios del sistema | |
echo | |
for usuarios in $(cat /etc/passwd | cut -d ":" -f 1) | |
do | |
if [ -d /home/$usuarios ];then | |
mensaje="Preparando copia de seguridad para el usuario $usuarios" | |
logger -p local0.info -t INFO: $mensaje | |
echo $mensaje | |
fi | |
done | |
echo | |
#Backup | |
tar -czf "$nombretar" "$directorioacopiar" > /dev/null 2>/dev/null | |
if [ $? -eq 0 ];then | |
mensaje="Backup realizado correctamente" | |
logger -p local0.notice -t NOTICIA: $mensaje | |
echo $mensaje | |
#Comprobación: md5 del fichero .tar.gz en directorio backup local | |
md5LOCAL=$(md5sum "$nombretar" | cut -d " " -f 1) | |
mensaje="md5 del fichero local $nombretar verificado: $md5LOCAL" | |
logger -p local0.info -t INFO: $mensaje | |
echo $mensaje | |
echo | |
mensaje="Procediendo al copiado de $nombretar en DVD..." | |
logger -p local0.info -t INFO: $mensaje | |
echo $mensaje | |
growisofs -Z /dev/dvdrw "$nombretar" > /dev/null 2>/dev/null | |
if [ $? -eq 0 ];then | |
mensaje="Operación de copiado a DVD completada. Esperando la verificación md5..." | |
logger -p local0.notice -t NOTICIA: "$mensaje" | |
echo $mensaje | |
#La bandeja DVD se expulsará y volverá a introducirse. Esperamos un tiempo prodencial. | |
sleep 15 | |
#Comprobación: md5 del fichero .tar.gz en DVD | |
md5DVD=$(md5sum "$(mount | grep sr0 | cut -d " " -f 3)/$nombretar" | cut -d " " -f 1) | |
else | |
mensaje="Error en el copiado al DVD, se conservará el archivo $nombretar" | |
logger -p local0.error -t ERROR: $mensaje | |
echo $mensaje | |
exit 1 | |
fi | |
else | |
mensaje="Error en el generado del backup" | |
logger -p local0.error -t ERROR: $mensaje | |
echo $mensaje | |
exit 1 | |
fi | |
if [ $md5DVD = $md5LOCAL ];then | |
mensaje="md5 veririfado: $md5DVD -El archivo $nombretar se ha copiado satisfactoriamente en el DVD" | |
logger -p local0.notice -t NOTICIA: "$mensaje" | |
echo $mensaje | |
mensaje="Eliminando copias locales..." | |
logger -p local0.info -t INFO: "$mensaje" | |
echo $mensaje | |
rm $nombretar | |
if [ $? -eq 0 ];then | |
mensaje="El arcihvo $nombretar ha sido eliminado satisfactóriamente" | |
logger -p local0.notice -t : "$mensaje" | |
echo $mensaje | |
else | |
mensaje="Ha ocurrido un error al intentar eliminar $nombretar" | |
logger -p local0.error -t ERROR: "$mensaje" | |
echo $mensaje | |
fi | |
fi | |
exit 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment