Você pode não ter mongodump
no seu PATH
. Tente usar o caminho absoluto para o comando mongodump
.
Este é o meu script, backup_mongo.sh
#!/bin/bash
suffix=$(date +%w)
rm /home/myuser/backup/mongo-$suffix -rf
mkdir /home/myuser/backup/mongo-$suffix
mongodump -h$1 -u$2 -p$3 -dmydb -o/home/myuser/backup/mongo-$suffix
No meu crontab -e
:
0 3 * * * /bin/bash /home/myuser/myproject/production/backup_mongo.sh localhost user1 pass1
Quando executo o script normalmente (executando o comando acima), o script funciona e o diretório "mydb" é criado no / mongo- $ suffix.
No entanto, quando eu coloco isso no crontab, o / mongo- $ suffix é criado, mas o diretório "mydb" não existe. Não há nada no sufixo / mongo- $.
É muito provável que seja um problema no PATH, mas eu recomendo não substituir o PATH no seu crontab, porque é
Seu bom estilo de codificação bash / sh para definir cada binário com o qual você deseja acionar, com seu caminho completo como variável
!#/bin/bash
RSYNC="/usr/bin/rsync"
e consulte a variável mais tarde.
$RSYNC /foo/bar baz
Existem também certas opções para alterar o usuário que está executando o crontab. Supondo que exista um usuário chamado mongodump que tenha definido um PATH que inclua o mongodump, você pode se tornar esse usuário e editá-lo. Ou você também pode usar
/bin/bash /bin/su - mongodump -c /bin/bash /home/myuser/myproject/production/backup_mongo.sh
no crontab das raízes.
O PATH padrão para o cron é restrito. Geralmente é /usr/bin:/bin
. Se você quiser executar qualquer coisa fora desses diretórios, você tem várias opções
Use caminhos completos para os comandos, por exemplo /path/to/mongodump/mongodump ...
Defina um PATH estendido no crontab, por exemplo,
PATH=/usr/bin:/bin/:/path/to/mongodump
0 3 * * * /bin/bash /home/myuser/myproject/production/backup_mongo.sh localhost user1 pass1
Defina o PATH no script que você está executando
#!/bin/bash
PATH=/usr/bin:/bin:/paath/to/mongodump
suffix=$(date +%w)
rm /home/myuser/backup/mongo-$suffix -rf
mkdir /home/myuser/backup/mongo-$suffix
mongodump -h$1 -u$2 -p$3 -dmydb -o/home/myuser/backup/mongo-$suffix