O Rsync definitivamente resolverá seu problema. Se você executar o rsync usando -e "ssh <ssh params>" , ele será executado através de uma conexão ssh e, sob o capô, o que o rsync faz, ele (localmente) gera a lista de arquivos e o delta para cada um dos arquivos nessa lista, antes de compará-lo contra uma lista gerada remotamente, e enviando arquivos. Isso significa que mesmo em uma conexão rápida, pode ser lento para começar, mas uma vez que está indo é rápido.
Eu acredito que há uma versão do windows cli do rsync e ssh, se não você pode querer tentar instalar o cygwin com o bash / rsync / ssh. Não é uma instalação grande se você não quiser muito. O truque com o rsync é obter as opções certas para o que você deseja.
Portanto, no seu exemplo, você tem stagingserver.local e remoteserver.local . Vamos dizer que seu acesso ao remoteserver é como usuário releaseuser . Em primeiro lugar, certifique-se de que você pode ssh para [email protected] usando putty (sugiro que você configure ~ releaseuser / .ssh / authorized_keys em remoteserver.local para permitir que você faça login como releaseuser usando a versão pública de uma chave ssh local localkey.pub , você pode definir isso criando uma chave privada em putty-keygen e salvando as chaves privadas / públicas do openssh como localkey e localkey.pub e, em seguida, carregue a chave pública em remoteserver.local ).
Ok, então rsync o diretório local localdirectory para o controle remoto remotedirectory , usando o acima: -
rsync -rave "ssh -i localkey" localdirectory/ [email protected]:/remotedirectory/
A barra à direita em cada um dos nomes de diretório, diz para copiar o conteúdo de localdirectory para o diretório remotedirectory em vez de copiar o próprio diretório. Se você perder a barra à direita, você receberá remotedirectory/localdirectory criado no servidor remoto
Então, para explicar um pouco as opções que usei, havia -rave (que eu sempre achei fácil de lembrar). O -r significa recursivo, então desça em diretórios. O -a significa arquivo, que é o mesmo que -rlptgoD , o que significa basicamente enviar tudo (links, permissões, horas, grupos, proprietários, dispositivos, mas não hard-links, acls ou xattrs). -v significa verbose, então echo para mostrar o que está enviando e -e especifica o comando rsh (no nosso caso, ssh -i , que diz ao ssh qual arquivo de chave usar).
Espero que ajude