como configurar um cron job e usar a sintaxe apropriada em meus trabalhos

2

Eu quero fazer um cron job que crie um tar do meu diretório web.

Eu tenho esse trabalho no lugar

* * * * * tar -zcvfp /disk1/archives/websites/'date +%Y-%m-%d_%I-%M-%S-%p'/'date +%Y-%m-%d_%I:%M:%S:%p'.tar.gz /web

este trabalho DEVE (mas não) criar um arquivo tar no meu diretório / disk1 .... então estou perplexo com isso.

Outra coisa que tem sido em minha mente é, é possível fazer com que todo o arquivo tar de backup seja descartado em date +%Y-%m-%d e todos os arquivos que foram criados no mesmo dia sejam colocados lá?

Assim, uma saída seria parecida com

/disk1/archives/websites/2012-02-05/2012-02-05_5:25:04.tar.gz

Eu fiz esse trabalho ser executado a cada minuto para fins de teste.

Há algo de errado com minha sintaxe?

    
por Eli 05.02.2012 / 14:30

2 respostas

2

cron não sabe o que é tar ou date porque não possui variáveis de ambiente. Reffer para os binários usando o caminho completo.

Se você não souber o caminho completo, use which para obtê-lo.

Ex:

[bart@dev ~]$ which tar
/bin/tar
[bart@dev ~]$ which date
/bin/date

Isso faria com que sua linha cron fosse:

/bin/tar -zcvfp /disk1/archives/websites/'/bin/date +%Y-%m-%d_%I-%M-%S'/'/bin/date +%Y-%m-%d_%I:%M:%S'.tar.gz /web
    
por 05.02.2012 / 14:40
0

Coloque o seu tar dentro de um script de shell, digamos, /usr/local/bin/backup.sh . Em seguida, chame esse script do cron.

* * * * * /usr/local/bin/backup.sh

O truque é que o cron não é um shell, então as coisas que funcionam na expansão do shell podem não funcionar no crontabs. É muito mais seguro e fácil depurar para colocar seus comandos em um script e, em seguida, chamar esse script (pelo caminho completo).

    
por 05.02.2012 / 14:42

Tags