Rsync sobre ssh com acesso root em ambos os lados

14

Eu tenho um servidor ubuntu mais antigo e um servidor debian mais novo e estou migrando os dados do antigo para o novo. Eu quero usar o rsync para transferir dados para facilitar a migração final e mais rápida do que o processo tar / scp / untar equivalente.

Como exemplo, quero sincronizar as pastas iniciais uma de cada vez para o novo servidor. Isso requer acesso root nas duas extremidades, pois nem todos os arquivos no lado da fonte são legíveis por todo o mundo e o destino precisa ser escrito com as permissões corretas em / home. Não consigo descobrir como dar acesso root rsync em ambos os lados.

Eu vi algumas perguntas relacionadas, mas nenhuma coincide exatamente com o que estou tentando fazer.

Eu tenho o sudo configurado e trabalhando nos dois servidores.

    
por Tim Abell 28.04.2010 / 11:18

3 respostas

13

Na verdade, você NÃO precisa permitir a autenticação de raiz via SSH para executar o rsync , como sugere Antoine. A autenticação de transporte e do sistema pode ser feita inteiramente por meio de contas de usuário, contanto que você possa executar o rsync com o sudo em ambas as extremidades para ler e gravar os arquivos.

Como usuário em seu servidor de destino, você pode sugar os dados do seu servidor de origem assim:

sudo rsync -aPe ssh --rsync-path='sudo rsync' boron:/home/fred /home/

O usuário que você executa como em ambos os servidores precisará de acesso sem senha * sudo ao binário rsync, mas você NÃO precisa ativar o login ssh como root em qualquer lugar. Se o usuário que você está usando não corresponder do outro lado, você pode adicionar user @ boron: para especificar um usuário remoto diferente.

Boa sorte.

* ou você precisará digitar a senha manualmente dentro da janela de tempo limite.

    
por 29.04.2010 / 00:06
3

Se os seus dados não forem altamente confidenciais, você poderá usar tar e socat . Na minha experiência, isso geralmente é mais rápido que rsync over ssh.

Você precisa de socat ou netcat nos dois lados.

No host de destino, vá para o diretório em que você gostaria de colocar seus dados, depois da execução:% socat TCP-LISTEN:4444 - | tar xzf -

Se o host de destino estiver escutando, inicie-o na fonte como:% tar czf - /home/fred /home/ | socat - TCP:ip-of-remote-server:4444

Para esta configuração, você precisará de uma conexão confiável entre os dois servidores.

    
por 28.04.2010 / 23:20
2

Ok, eu reuni todas as pistas para conseguir algo que funciona para mim.

Vamos chamar os servidores "src" & "dst".

Configure um par de chaves para raiz no servidor de destino e copie a chave pública para o servidor de origem:

dest $ sudo -i
dest # ssh-keygen
dest # exit
dest $ scp /root/id_rsa.pub src:

Adicione a chave pública às chaves autorizadas do root no servidor de origem

src $ sudo -i
src # cp /home/tim/id_rsa.pub .ssh/authorized_keys

De volta ao servidor de destino, puxe os dados com o rsync:

dest $ sudo -i
dest # rsync -aP src:/home/fred /home/
    
por 28.04.2010 / 11:30