Como rsync via gateway ssh?

3

Eu quero rsync meus arquivos locais com um backup que eu tenho em um servidor que permite o acesso de onde estou agora apenas através de um gateway. Então eu vim com o seguinte

rsync -avz -r --stats --progress -e "ssh gateway.dot.com ssh server.dot.com:/home/myname/documents/" /home/myname/documents 

e há alguma comunicação acontecendo enquanto todos os arquivos são listados, mas no resumo no final revela que realmente não houve transferência de arquivos.

Number of files: 270889
Number of files transferred: 0
Total file size: 70343212868 bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 7596005
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 7613770
Total bytes received: 17764

sent 7613770 bytes  received 17764 bytes  50707.87 bytes/sec
total size is 70343212868  speedup is 9217.44

Idéias?

    
por Giant Molecular Klaus 21.03.2013 / 23:44

2 respostas

1
  1. O comando rsync não deve ser rsync ... -e "ssh the.gateway ssh" /local/dir/ the.remote.server:/remote/dir/ ?
  2. A mensagem speedup is 9217.44 mostra que a transferência é 9217 vezes otimizada, ou seja, os arquivos entre os dois hosts são quase (se já não estão) sincronizados.

ATUALIZAÇÃO:

# 2 não está correto. Veja resposta do crayzeewulf para mais explicações. O valor da aceleração me enganou para entender que funcionou.

    
por 22.03.2013 / 09:53
7

Acho que o item # 1 na resposta do clarkw está correto. Se você usar ...-e "ssh gateway.dot.com ssh server.dot.com:/home/myname/documents/" , o comando rsync correspondente terá um diretório de origem, mas nenhum diretório de destino. Neste caso, de acordo com o manual do rsync:

Usages with just one SRC arg and no DEST arg will list the source 
files instead of copying.

Isso é exatamente o que está acontecendo. Você pode verificar isso fornecendo lixo como o argumento -e . Por exemplo:

rsync -avz --stats -e 'suq maballs' /tmp

Este comando funcionará bem. Ele listará tudo em /tmp e exibirá boas estatísticas no final:

Number of files: 28
Number of files transferred: 0
Total file size: 182 bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 955
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 998
Total bytes received: 26

sent 998 bytes  received 26 bytes  2048.00 bytes/sec
total size is 182  speedup is 0.18

Observe que nenhum arquivo é transferido aqui, assim como no seu exemplo. Você precisa modificar seu comando original:

rsync -avz -r --stats --progress \
    -e "ssh gateway.dot.com ssh server.dot.com:/home/myname/documents/" \
    /home/myname/documents 

para:

rsync -avz -r --stats --progress \
    -e "ssh gateway.dot.com ssh" \
    server.dot.com:/home/myname/documents/ \
    /home/myname/documents  

Claro, substitua gateway.dot.com e server.dot.com pelos nomes de host apropriados.

    
por 22.03.2013 / 21:38

Tags