salva il backup mysql sull'unità di rete afp non funziona come cron job

1

Per qualche strana ragione, non sono in grado di salvare un backup mysql generato tramite mysqldump su un'unità di rete afp come processo cron. Se chiamo lo script della shell come utente root (accesso tramite sudo su nel terminale), funziona perfettamente. Quindi, lo script è ok. Deve avere qualcosa a che fare con il cron job stesso.

Per fare ciò, ho modificato il crontab di root usando crontab -e in questo modo:

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

Questo dice al demone crontab di eseguirlo ogni giorno lavorativo (dal lunedì al venerdì) alle 12.10 PM.

Con la stessa chiamata dal terminale funziona (come descritto sopra).

Questo è lo script di shell che sto usando per farlo:

#!/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")

Il processo cron crea un file sull'unità di rete con una dimensione del file di 20 byte. Se lo sparo, è vuoto. Normalmente il database ha circa 12 MB. Quindi, qualcosa non va qui.

Questo script viene eseguito tramite il cron job in ora di pranzo, quindi nessuno usa il MacBook in questo momento (lo schermo è bloccato con un utente connesso). Standby è completamente disabilitato (solo lo schermo in standby è attivo dopo 10 minuti).

Qualcuno sa perché questo non funziona? Qualsiasi aiuto o suggerimento sarebbe fantastico.

    
posta alpham8 31.03.2017 - 13:49
fonte

1 risposta

3

Trovato la soluzione: il problema era che il comando mysqldump non poteva essere trovato. Dovevo aggiungere il percorso assoluto ad esso /Applications/MySQLWorkbench.app/Contents/MacOS/mysqldump

Grazie a Patrix e Allan per quel suggerimento.

    
risposta data 31.03.2017 - 15:29
fonte

Leggi altre domande sui tag