Não é possível executar o comando no cron

1

Eu estava tentando configurar o rsync para fazer backup de um diretório todos os dias com o nome do dia atual.

rsync --verbose --stats --compress --recursive /home/alpha/ /var/backups/alpha/'date +"%a"'

O comando acima está funcionando bem e está sincronizando dados no diretório Mon . Mas quando copio o mesmo comando no cron ele não está funcionando

13 16 * * * rsync --verbose --stats --compress --recursive /home/alpha/ /var/backups/alpha/'date +"%a"'

Mas quando eu removo 'date + "% a"' parte do cron ele funciona.
Por que o cron não está executando 'date + "% a"' ?

    
por afzalex 26.09.2016 / 13:02

2 respostas

4

O sinal % deve ter escape com \ , pois é uma maneira alternativa de finalizar um comando em crontab .

  

O campo "sexto" (o restante da linha) especifica o comando a ser executado. A parte inteira do comando da linha, até uma nova linha ou caractere%, será executada por / bin / sh ou pelo shell especificado na variável SHELL do cronfile. Os sinais de porcentagem (%) no comando, a menos que tenham escapado com barra invertida (), serão alterados para caracteres de nova linha e todos os dados após o primeiro% serão enviados para o comando como entrada padrão.

Portanto, a sua linha crontab deve ser semelhante:

13 16 * * * rsync --verbose --stats --compress --recursive /home/alpha/ /var/backups/alpha/'date +"\%a"'

Fontes:

por Melebius 26.09.2016 / 13:10
1

Você também pode usar:

13 16 * * * bash -c "rsync --verbose --stats --compress --recursive /home/alpha/ /var/backups/alpha/'date +'%a''"
    
por Mr. Pundir 26.09.2016 / 13:17