Rsync sobre ssh ou outra coisa?

9

Eu tenho tentado usar o rsync no OSX para Linux ou Unix, sobre a qual não tenho muito controle. Eu tenho feito algo parecido com isto

rsync -avz -e ssh remoteuser@remotehost:/remote/dir /this/dir/ 

Erro retornado é:

bash: rsync: command not found rsync: connection unexpectedly closed (0 bytes received so far) [receiver] rsync error: remote command not found (code 127) at /SourceCache/rsync/rsync-37.3/rsync/io.c(452) [receiver=2.6.9]

No entanto, depois de ler os documentos, estou começando a achar que precisaria instalar um daemon rsync no host remoto.

  1. Preciso instalar um servidor rsync no host remoto?
  2. Alternativas gratuitas - GUI ou não-GUI - quais não exigem a instalação de qualquer coisa no host remoto ?

Obrigado!

    
por Dan Rosenstark 07.02.2010 / 14:10

4 respostas

20

Você precisa de um comando rsync no servidor, mas não precisa executar um daemon.

Obtenha um binário rsync que funcione no servidor, coloque-o em algum lugar da sua casa e adicione este sinalizador à sua linha de comando: --rsync-path=/home/user/path/to/rsync .

Se você não quiser copiar o rsync para os servidores, você pode usar scp, ou sshfs.

sshfs user@host ~/sync/user-host
rsync -av ~/local-dir ~/sync/user-host/remote-dir

Nesse caso, o rsync será executado completamente localmente, mas as alterações serão propagadas para o servidor.

    
por 07.02.2010 / 15:47
5

Você precisa ter o rsync no host remoto - não necessariamente um servidor rsync (que, acredito, não suportará a conexão ssl), mas o rsync na caixa local precisa falar com um rsync no remoto caixa. Você está usando o ssh para vincular os dois.

Assumindo que o rsync exista na caixa remota, ele não está no caminho de busca padrão para o seu shell registrado no ssh. Dependendo de suas preferências e permissões na caixa remota, você pode tentar

  • usando o --rsync-path = option
  • alterando o PATH padrão para seu shell ssh remoto
  • adicionando um alias para o rsync no shell ssh remoto
  • alterando o comando remoto executado para o caminho absoluto para o rsync

ou algo similar. Se o rsync como um executável (vice-servidor) não existir no host remoto, ele teria que ser adicionado.

    
por 07.02.2010 / 15:52
1

Não há muito sentido em usar o rsync sem executar um daemon rsync no host remoto, apesar da solução sshfs do criativo proposta acima. A idéia de eficiência no rsync é fazer com que as duas instâncias comparem suas cópias locais do conjunto de dados, calculando localidades de verificação localmente, comparando-as pela rede e transmitindo apenas os dados reais das partes dos arquivos que realmente diferem.

Se você usar sshfs ou qualquer montagem de rede, estará apenas ocultando o fato de que ele precisa copiar o conjunto de dados inteiro na rede do host remoto para calcular as somas de verificação localmente e transmitir as diferenças sobre elas. Seria mais rápido e mais barato excluir tudo localmente e 'scp -r' o lote.

    
por 14.07.2011 / 14:22
0

Tente SCP . Como você já tem acesso ssh, não precisa instalar mais nada no host remoto:)

Para copiar arquivos do host remoto para o uso do host local:

# scp -R remoteuser@remotehost:/remote/dir /this/dir/ 

Ou copie arquivos do host local para o host remoto com:

# scp -R /this/dir remoteuser@remotehost:/remote/dir 
    
por 07.02.2010 / 15:37