Configurar backup semanal CRON

6

Eu quero fazer um backup das minhas pastas /var/lib/mysql e /var/www e salvá-las como arquivos tar.gz no meu servidor de arquivos de rede montado (uslons001).

Aqui está o meu arquivo bash localizado em: /bin/backups/mysqlbackup.sh

#!/bin/bash
mkdir /home/lv_admin/uslons001/'date +%d%m%y'
cd /home/lv_admin/uslons001/'date +%d%m%y'
tar -czf mysql.tar.gz /var/lib/mysql
tar -czf www.tar.gz /var/www

O que funciona PERFEITAMENTE bem quando eu o executo em um shell cmd mas quando eu configuro o cron job ele nunca roda, então eu não estou configurando o cron job corretamente. Meu trabalho cron parece com isso.

   36 10 * * 5 /bin/backups/mysqlbackup.sh

.. também não há nada no arquivo /var/log/cron.log, portanto, nenhum erro está sendo registrado. (mesmo depois de ativar o log do cron no arquivo /etc/syslog.conf

    
por sadmicrowave 04.03.2011 / 14:46

4 respostas

1

Eu mudei a localização do arquivo bash para /usr/local/mysqlbackup.sh . Depois disso, fiz os seguintes comandos no arquivo:

cd /usr/local/
sudo chown [username] mysqlbackup.sh
sudo chmod -rwx mysqlbackup.sh
sudo chmod go= mysqlbackup.sh

depois parei de usar ~$ crontab -e como o comando para editar o trabalho cron e comecei a usar sudo nano /etc/crontab onde criei uma nova linha de trabalho com o seguinte:

00 20    * * 5  root  /usr/local/mysqlbackup.sh

Eu comecei a usar este arquivo porque ele me permitiu dizer qual usuário deveria executá-lo. Após essas alterações, o trabalho cron funciona.

    
por sadmicrowave 04.03.2011 / 21:22
7

Poucos pontos a serem feitos:

  • Por que você está usando timestrings em /etc/cron.weekly/ scripts? Você só deve colocar scripts executáveis lá. Você não precisa criá-los nem nada. Isso apenas duplicará seu trabalho. Veja /etc/cron.daily/apt para um exemplo do que estou falando. É apenas um script simples.

  • Por comentário do geirha, o arquivo não pode ter uma extensão. Estranho, eu sei, então renomeie:

    sudo mv /etc/cron.weekly/mysqlbackup{.sh,}
    
  • Você precisa executar sudo chmod +x /etc/cron.weekly/mysqlbackup para torná-lo executável. Você pode testá-lo executando-o usando esse caminho.

  • Se você deixar em /etc/cron.weekly/ , o script será executado como root. Nenhum dos seus links de ~/ vai funcionar. Use caminhos completos. Eu sugiro que depois de fazer o mkdir you cd nele e que irá reduzir os enormes caminhos nos comandos subseqüentes. Se você precisar que os arquivos gerados sejam de propriedade de seu usuário, faça seu script chown deles para seu usuário quando ele for feito o backup.

    Não vejo nenhum motivo para que isso seja orientado por raiz. Você poderia plonk o script em seu diretório home e apenas usar o padrão crontab -e para adicionar sua regra e executá-la. Ele ainda precisa ser executável e eu ainda recomendo que você use caminhos completos, mas isso mantém as permissões um pouco mais fáceis.

por Oli 04.03.2011 / 17:11
2

O dia da semana é um campo numérico, por isso está falhando ao tentar analisar "sex". Mude para 5 (domingo é 0). edit: Vejo que o OP foi atualizado para corrigir isso e ainda há problemas, mas eles são abordados em outras respostas.

O formato cron está bem documentado on-line, então eu geralmente acabo verificando os documentos antes de escrever um novo trabalho cron: link

Além disso, certifique-se de estar usando crontab -e (ou similar) para editar seu arquivo cron, o que fará com que seja re-analisado.

    
por ImaginaryRobots 04.03.2011 / 15:38
0

Você pode tentar redirecionar os erros da sua linha do cron para um arquivo, como:

/usr/local/mysqlbackup.sh &>/var/log/mysqlcron.log

Isso deve capturar stdout e stderr e reportar se houver algum erro de sintaxe, etc.

Nota: se você estiver fazendo backup de um live banco de dados, você deve usar os utilitários específicos para o backup, como mysqldump , em vez de usar um comando tar genérico. A razão é que, se os arquivos dentro de / var / lib / mysql / change enquanto o tar está em execução, você pode acabar com uma imagem inconsistente do banco de dados.

    
por bitwelder 05.03.2011 / 15:56