Normalmente eu uso o comando
rsync -av --delete someroot/somedir user@remote_server_ip:/someroot/.
no meu servidor de desenvolvimento para sincronizar somedir
com um servidor remoto. Funcionou bem. Mas depois que o servidor remoto foi reiniciado, esse comando não funciona mais. Ele exibe as seguintes mensagens de erro:
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(463) [sender=2.6.8]
Mas o serviço SSH ainda funciona corretamente. Eu posso usar ssh user@server_ipaddress
para entrar no servidor. Como posso fazer o rsync
trabalho de novo?
update:
rsync
também não funciona localmente. dá erro da seguinte forma:
[root@videochatweb1 web]# ./sync_client.sh
building file list ... rsync: link_stat "/opt/web/client/index.php" failed: Permission denied (13)
done
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at main.c(892) [sender=2.6.8]
atualização 2
Eu compilei o código fonte rsync
e reinstalei no servidor. Agora funciona. Obrigado por todas as sugestões.
rsync
no sistema remoto?rsync: Failed to exec ssh: Permission denied (13) rsync error: error in IPC code (code 14) at pipe.c(83) [sender=2.6.8] rsync: writefd_unbuffered failed to write 4 bytes [sender]: Broken pipe (32) rsync error: error in IPC code (code 14) at io.c(1119) [sender=2.6.8]
rsync
sozinho?Respostas:
Desde que a mensagem de erro diz "erro no protocolo rsync", isso indica que o rsync está usando o
rsync
protocolo para comunicação e nãossh
. Portanto, seu teste que mostra quessh
está funcionando é irrelevante, mas pode levar a uma solução.Eu acho que o servidor remoto pode estar executando o rsync como um daemon (
rsync --daemon
) antes da reinicialização. Não foi reiniciado automaticamente após a reinicialização.Eu vejo duas soluções:
rsync --daemon
no servidor remoto. Coloque-o em algo/etc/init.d
semelhante ou semelhante para que seja reiniciado após a próxima reinicialização.ssh
protocolo para o rsync.Para usar o
ssh
rsync, defina a variável de ambiente:ou adicione
-e ssh
ao seu comando rsync.fonte
rsync
no sistema local fala comrsync
o sistema remoto usando o protocolo rsync. ssh é apenas o transporte.rsync --daemon
escuta na porta 873 (por padrão). Isto é independente dessh
rsync
é ssh, a menos que seja usado um duplo-ponto duplo.rsync
Usos modernosssh
, mas acho que os mais antigos são usadosrsh
por padrão. Eu me lembro de ter que definir RSYNC_RSH (e continuar fazendo isso fora do hábito e / ou legado bash arquivos de inicialização).-e ssh
opção, mas ainda tenho o mesmo erro :(Às vezes, esses códigos de erro rsync são devido a diferentes versões do rsync entre o cliente eo servidor, você pode verificar o número de versão de ambos?
fonte
rsync --version
showsrsync version 2.6.8 protocol version 29
.