lunes, 19 de agosto de 2013

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.

No hay comentarios:

Publicar un comentario