Rsync sobre ssh, ou algo mais?

10

Eu tenho tentado usar o rsync no OSX para Linux ou Unix box sobre o qual não tenho muito controle. Eu tenho feito algo assim

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

O erro retornado é:

bash: rsync: comando não encontrado rsync: conexão inesperadamente fechada (0 bytes recebidos até agora) [receptor] erro rsync: comando remoto não encontrado (código 127) em /SourceCache/rsync/rsync-37.3/rsync/io.c(452 ) [receptor = 2.6.9]

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

  1. Devo instalar um servidor rsync no host remoto?
  2. Alternativas gratuitas - GUI ou não - que não exigem a instalação de nada no host remoto ?

Obrigado!

Dan Rosenstark
fonte
1
Quais são os problemas exatos que você está tendo com seu comando atual?
Fideli
@ Fideli, desculpe, esqueci disso. Editando pergunta agora
Dan Rosenstark
1
Obrigado por esta pergunta, mas você pode marcá-la, rsyncpor favor?
Andrew Grimm

Respostas:

21

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

Obter um binário rsync que as obras no servidor, colocá-lo em algum lugar em sua casa, e adicionar esta bandeira para sua linha de comando: --rsync-path=/home/user/path/to/rsync.

Se você não deseja copiar o rsync para os servidores, 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.

Tobu
fonte
Gosto muito dessa solução, principalmente porque o servidor é um plano de hospedagem barato no GoDaddy e duvido que seja capaz de executar o rsync no servidor. +1 por enquanto!
Dan Rosenstark
Qual é o caminho mais fácil para instalar o sshfs no OSX? MacFuse ou há algo mais fácil?
Dan Rosenstark
MacFuse + (MacFusion ou sshfs-static-leopardo), eu acho que (eu não sou um usuário OSX)
Tobu
Sim, o MacFuse faz isso. Só que a página de download do binário sshfs fornece o binário com uma extensão .gz. Então você precisa renomeá-lo em vez de dispará-lo. Irritante, mas tudo bem agora! Obrigado
Dan Rosenstark
6

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

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

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

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

mpez0
fonte
Isso foi útil, então marque +1, mas estou pensando em como especificar o diretório inicial do rsync no lado do Windows se estiver executando-o do Mac para o PC assim: superuser.com/questions/1462861/…
Ryan
1

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

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

imenso
fonte
3
Não exatamente, porque o rsync verifica se os arquivos são modificados por tamanho e carimbo de data e hora, e isso ainda é muito mais eficiente do que verificar todos os arquivos. Mas, de fato, o mecanismo de atualização incremental do rsync nos arquivos não faz sentido sobre os sshfs.
Jaap Ancianidade
0

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

Para copiar arquivos do host remoto para o host local, use:

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

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

# scp -R /this/dir remoteuser@remotehost:/remote/dir 
lyarwood
fonte
1
Obrigado Lee, o SCP é ótimo, mas não faz "sincronização", certo?
Dan Rosenstark
1
deve ser um "r" pequeno:scp -r
0x4a6f4672 23/01