Script cron do Ubuntu 9.10 'ec2-consistent-snapshot' incapaz de executar e acessar arquivos

2

Tenho uma imagem do Ubuntu 9.10 em execução no Amazon EC2 e configurei um script de backup ec2-consisten-snapshot.

Consigo executar o script a partir do SSH e tudo funciona bem.

sudo ec2-consistent-snapshot --mysql --xfs-filesystem /vol vol-xxxxxxx >>/mnt/backup.log 2>&1

No entanto, quando eu agendar um cron job em sudo crontab -e, o script é executado, mas me dá erros.

12 18 4 2 *  ec2-consistent-snapshot --mysql --xfs-filesystem /vol vol-xxxxxxx >>/mnt/backup.log 2>&1

ec2-consistent-snapshot: ERROR: Can't find AWS access key or secret access key at /usr/bin/ec2-consistent-snapshot line 76. xfs_freeze: cannot unfreeze filesystem mounted at /vol: Invalid argument ec2-consistent-snapshot: ERROR: xfs_freeze -u /vol: failed(256)

As chaves de acesso da AWS estão localizadas em $ HOME / .awssecret e funcionam bem se você não executá-las no cron

Alguém pode me apontar o que eu preciso fazer, eu tenho tentado descobrir isso na semana passada. Além disso, como faço para solucionar problemas do xfs_freeze que funciona bem na linha de comando.

Muito obrigado!

    
por McLovin 04.02.2010 / 19:33

3 respostas

2

sudo crontab -e edita o crontab da raiz, certo? Quando você diz que tem $ HOME / .wssecret, o que é $ HOME? casa da raiz ou sua?

Você pode querer pensar em usar /etc/cron.d, além disso, pode adicionar o nome do usuário para executar o script como nesses arquivos (por exemplo, cuidado: sintaxe ligeiramente diferente para os scripts)

Edite (responda sua pergunta no comentário):

Crie um arquivo /etc/cron.d/myEc2Crontab

faça conter:

SHELL=/bin/sh
PATH=whatever you need as your path
12 18 4 2 *  root ec2-consistent-snapshot --mysql --xfs-filesystem /vol vol-xxxxxxx >>/mnt/backup.log 2>&1

observe a 'raiz' adicionada logo após a especificação da hora, antes do seu comando. Isso especifica o usuário que o comando é executado como.

    
por 04.02.2010 / 19:39
3

McLovin: Eu sou o autor principal do instantâneo consistente com ec2. Se você copiar o .awssecret para /root/.awssecret, ele deverá funcionar como você deseja. Existem várias outras maneiras de passar o ID da chave de acesso e a chave de acesso secreto se você olhar para a página do manual.

O erro xfs_freeze está acontecendo apenas por causa do erro anterior. As versões mais recentes deste software recebem um erro se você tentar descongelar um sistema de arquivos que ainda não esteja congelado. Você pode ignorar o erro, embora um patch para corrigir esse tipo de comportamento já esteja sendo revisado.

Eu adicionaria links úteis aqui para os vários recursos, mas serverfault ainda não confia em mim o suficiente:)

    
por 05.02.2010 / 04:41
1

Dependendo da configuração, o sudo não redefine todas as variáveis de ambiente quando é executado. Por exemplo, quando eu sudo no Ubuntu 9.10 $ HOME ainda aponta para o diretório home do meu usuário, não raízes!

No seu script, substitua $ HOME pelo caminho completo para .awssecret.

    
por 04.02.2010 / 20:15