ssh conexão operação esgotada usando rsync

3

Eu uso o rsync para fazer backup do meu servidor remoto no meu dispositivo local, mas quando eu o combino com um trabalho cron, meu ssh expira. Só para ficar claro, os dados são armazenados em um servidor remoto e eu quero que ele seja armazenado no meu servidor local. A solicitação de backup deve ser enviada do meu servidor local para o servidor remoto.

O comando para backup dos dados está funcionando quando eu apenas digito no terminal da seguinte forma:

rsync -chavzP --stats USERNAME@IPADDRES: PATH_TO_BACKUP LOCAL_PATH_TO_BACKUP

mas quando eu o combino com um cron job como este:

10 11 * * * rsync -chavzP --stats USERNAME@IP_ADDRESS: PATH_TO_BACKUP LOCAL_PATH_TO_BACKUP

a conexão ssh expira. Quando o cronjob o executa, envia uma mensagem para o usuário root com a saída assim:

From local.xx.xx.xx  Tue Jul  2 11:20:17 2013
X-Original-To: username
Delivered-To: [email protected]
From: [email protected] (Cron Daemon)
To: [email protected]
Subject: Cron <username@server> rsync -chavzP --stats USERNAME@IPADDRES: PATH_TO_BACKUP LOCAL_PATH_TO_BACKUP
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=username>  
X-Cron-Env: <USER=username>
X-Cron-Env: <HOME=/Users/username>
Date: Tue,  2 Jul 2013 11:20:17 +0200 (CEST)

ssh: connect to host IP_ADDRESS port XX: Operation timed out
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: unexplained error (code 255) at /SourceCache/rsync/rsync-42/rsync/io.c(452)          [receiver=2.6.9]

Portanto, o comando rsync está funcionando apenas quando digitado no terminal, mas não quando usado por um cronjob. Alguém pode explicar isso?

    
por Mark Molina 02.07.2013 / 11:31

1 resposta

5

Quando você executa um comando do cron, ele não tem acesso às informações do ambiente da mesma forma que faria se fosse executado a partir do shell. Isso significa que ele não encontra sua chave ssh ou quaisquer variáveis de ambiente que você esteja usando para configurar seu agente SSH.

Se você estiver usando uma senha sem senha, altere sua linha rsync para esta:

rsync -chavzP -e "ssh -i /Users/username/.ssh/YOUR_PRIVATE_KEY_HERE" --stats USERNAME@IP_ADDRESS: PATH_TO_BACKUP LOCAL_PATH_TO_BACKUP
    
por 02.07.2013 / 11:48