Como adicionar um script bash a um cron job?

1

Eu tenho um script chamado backup.sh :

#!/bin/bash
sudo zip -r /home/jazuly/backup.zip /var/lib/automysqlbackup/
cd /home/jazuly/backupscript/cp2google/
php cp2google.php /home/jazuly/backup.zip
cd ~
rm -f /home/jazuly/backup.zip

Tornei-o executável:

sudo chmod +x backup.sh

Então tentei editar cron com crontab -e .

Eu adiciono:

# m h dom mon dow command
0 0 * * * /home/jazuly/backup.sh

mas quando cron envia o backup.zip para o meu e-mail, eu o baixo e abro, e o arquivo está corrompido.

Se eu executar o script manualmente com:

$ sudo chmod +x backup.sh 
$ ./backup.sh

Eu posso abrir o arquivo zip.

    
por Jazuly 15.06.2017 / 07:13

3 respostas

0

Aqui estão os passos de como corrigi-lo:

  1. Alterar permissão & amp; Proprietário de var/lib/automysqlbackup to 777 & amp; jazuly.jazuly .
  2. Mova todas as pastas & amp; arquivos de backupscript/cp2google/ a home/jazuly .
  3. Use wait para cada declaração.
  4. Meu código final:

    #!/bin/bash
    zip -r backup.zip /var/lib/automysqlbackup/
    wait
    php cp2google.php backup.zip
    wait
    rm -f backup.zip
    

    E meu cron :

    0 0 * * * /home/jazuly/backup.sh
    

    para fazer backup a cada meia noite / dia.

    Eu não acho que seja necessário escrever o caminho completo se o arquivo .sh estiver no mesmo caminho com o que você deseja executar.

por Jazuly 16.06.2017 / 01:50
1

Você precisará usar o caminho completo em qualquer script executado pelo cron. Então, não faça cd ~ , dê em vez de cd /home/jazuly

Para mais depuração, você também pode redirecionar a saída do script cron para um arquivo, com /home/jazuly/backup.sh 1> /home/jazuly/log.txt 2> /home/jazuly/err.txt

Então, todo o comando:

# m h dom mon dow command
0 0 * * * /bin/bash /home/jazuly/backup.sh 1> /home/jazuly/log.txt 2> /home/jazuly/err.txt
    
por seanlano 15.06.2017 / 07:19
0

Tente usar caminhos completos

#!/bin/bash
/usr/bin/zip -r /home/jazuly/backup.zip /var/lib/automysqlbackup/
/usr/bin/php /home/jazuly/backupscript/cp2google/cp2google.php /home/jazuly/backup.zip
rm -f /home/jazuly/backup.zip

E adicione /bin/bash no cron

# m h dom mon dow command
0 0 * * * /bin/bash /home/jazuly/backup.sh

E verifique as permissões dos arquivos backup.zip , backupdatabaseterbaru-c771cd4f4fcf.p12

    
por zombic 15.06.2017 / 09:07