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:
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