Esse problema pode ser resolvido com rsync
. Pelo menos esta solução deve ser competitiva em termos de desempenho.
Primeiro, rsync
pode ser chamado de um dos sistemas remotos para superar a limitação na incapacidade de copiar diretamente entre dois sistemas remotos.
Segundo, a criptografia / descriptografia pode ser evitada executando rsync
no modo Daemon Access em vez do modo Remote Shell Access.
No modo de acesso ao daemon rsync
não encapsula o tráfego por meio de uma conexão ssh. Em vez disso, ele usa seu próprio protocolo em cima do TCP.
Normalmente, você executa o daemon do rsync de inet.d ou stand-alone. De qualquer forma, isso requer acesso root a um dos sistemas remotos. Supondo que o acesso root não esteja disponível, ainda é possível iniciar o daemon.
Iniciar o daemon rsync
como um usuário não privilegiado na máquina de destino
ssh -i private_key ssh_user@destination-IP \
"echo -e 'pid file = /tmp/rsyncd.pid\nport = 1873' > /tmp/rsyncd.conf
ssh -i private_key ssh_user@destination-IP \
rsync --config=/tmp/rsyncd.conf --daemon
Copie os arquivos
ssh -i private_key ssh_user@source_ip \
"rsync [OPTIONS] source-path \
rsync://ssh_user@destination-IP:1873:destination-path"