guardar la copia de seguridad de mysql en una unidad de red afp falla como tarea cron

1

Por alguna extraña razón, no puedo guardar una copia de seguridad generada de mysql a través de mysqldump en una unidad de red afp como un trabajo cron. Si llamo al script de shell como usuario root (inicio de sesión a través de sudo su en terminal), funciona perfectamente. Por lo tanto, el guión está bien. Debe tener algo que ver con el trabajo cron.

Para hacerlo, edité el crontab de la raíz usando crontab -e así:

10 12 * * 1-5 sh /var/root/cronjobs/mysql_backup.workdaily.sh

Esto le dice al demonio crontab que lo ejecute todos los días laborables (de lunes a viernes) a las 12.10 p.m.

Con la misma llamada desde el terminal funciona (como se describe anteriormente).

Este es el script de shell que estoy usando para hacerlo:

#!/usr/bin/env sh
LOCALMOUNTPOINT="/Volumes/MyDrive"

# check if network drive is mounted
if mount | grep "on $LOCALMOUNTPOINT" > /dev/null; then
    echo "mounted"
else
    # not needed the below check, but much more safer in cron job execution:
    if ls -lha /Volumes | grep "$LOCALMOUNTPOINT" > /dev/null; then
        mount -t afp "afp://username:password@NETWORKDRIVE%28AFP%29._afpovertcp._tcp.local/Subfolder" /Volumes/MyDrive
    else
        mkdir /Volumes/MyDrive && mount -t afp "afp://username:password@NETWORKDRIVE%28AFP%29._afpovertcp._tcp.local/Subfolder" /Volumes/MyDrive
    fi
fi

mysqldump -u root -ppassword --all-databases | gzip -c > $(date "+/Volumes/MyDrive/Dumps/mysql/username/full__%FT%H_%M_%S.sql.gz")

El trabajo cron crea un archivo en la unidad de red con un tamaño de archivo de 20 bytes. Si lo tiro, está vacío. Normalmente la base de datos tiene unos 12 MB. Entonces, algo está mal aquí.

Este script se ejecuta a través del trabajo cron en la hora del almuerzo, por lo que nadie usa el MacBook en este momento (la pantalla está bloqueada con un usuario registrado). El modo de espera está completamente deshabilitado (solo el modo de espera de la pantalla está activo después de 10 minutos).

¿Alguien sabe por qué esto no funciona? Cualquier ayuda o sugerencia sería genial.

    
pregunta alpham8 31.03.2017 - 13:49

1 respuesta

3

Encontré la solución: el problema era que el comando mysqldump no se pudo encontrar. Necesitaba agregarle la ruta absoluta /Applications/MySQLWorkbench.app/Contents/MacOS/mysqldump

Gracias a patrix y Allan por ese consejo.

    
respondido por el alpham8 31.03.2017 - 15:29

Lea otras preguntas en las etiquetas