Programacion defensiva en los respaldos ....

En un servidor moodle que monitoreo, hacemos respaldos a un disco USB externo. Ha pasado varias veces, que el disco es desmontado. Decidí aplicar algunas ideas de programación defensiva al script de respaldos.

Antes de empezar con el respaldo ejecuto lo siguiente:

DISK_AVAILIABLE=$(mount |grep PATH|wc -l)

PATH se sustituye por el camino al punto de montaje del disco USB. Con esto determino si el disco esta montado. Una posible mejora a esta parte del script es que PATH esté en una variable y sustituir los comandos (mount, grep y wc) por variables, chequeando que sean ejecutables. Con esos cambios agregaríamos algo asi:

MONTAJE="PATH A MONTAR"
test -d ${MONTAJE}|| exit 1

MOUNT=$(which mount)
test -x ${MOUNT} || exit 1
GREP=$(which grep)
test -x ${GREP} || exit 1
WC=$(which wc)
test -x ${WC} || exit 1

La linea a ejecutar queda entonces:

DISK_AVAILIABLE=$(${MOUNT} |${GREP} ${MONTAJE}|${WC} -l)

Consultamos a la variable para decidir si hacemos el respaldo

if [ ${DISK_AVAILIABLE} == 1 ]; then
# Respaldar
else
# Manejo de errores
fi

No es una idea muy original, pero para el contexto es mas que adecuado.

Comentarios

Entradas populares de este blog

Listar Esquemas y Tablas de Oracle

SCRIPT para Modem BANDLUXE LTE en Linux

Contar Registros en todas las tablas de SQL Server