Quero sincronizar novamente os arquivos entre dois servidores remotos. Tentei seguir a próxima solução do @roaima:https://unix.stackexchange.com/a/183516/137526, mas preciso de uma solução mais delicada, por dois motivos:
- Um dos servidores remotos possui uma porta não padrão para ssh, então preciso especificar a porta com a opção -p.
- Posso fazer ssh para ambos os servidores, mas tive que usar nomes de usuário diferentes, por isso deve ser especificado explicitamente.
Além disso, na solução citada não está claro qual é o caminho no host de origem e qual está no host de destino, pois ambos aparecem como /var/www
Eu tentei variações diferentes do próximo comando, mas sem sucesso:
ssh -R localhost:50000:username1@dest_host:22 username2@source_host 'rsync -e "ssh -p 50000" -avzt --progress --partial /path/on/source/ localhost:/path/on/destination/'
Responder1
O que você está fazendo aí é no mínimo 'complicado'. Pelo que entendi, você se conecta a um servidor e solicita que ele sincronize com outro servidor.
Para facilitar o uso, você pode especificar a porta e o usuário a serem usados na configuração ssh local para um host específico. por exemplo, se você adicionar as seguintes linhas ao arquivo ~/.ssh/config (/home/username2/.ssh/config) no source_host:
machine dest_host
user username1
port 50000
Você pode sincronizar novamente os arquivos para dest_host de source_host com:
ssh username2@source_host 'rsync -e ssh /source/path/on/source_host dest_host:path_below_username1_home
Supondo que o sshd de dest_host escuta na porta 50000. Você também pode querer dar uma olhada na opção "-r" / "-u" do rsync.
Responder2
A solução elegante que encontrei está usando scp
.
scp -3 -Cp [email protected]:/path/file*.txt [email protected]:/path/
Funciona perfeitamente. Observe o uso de dois nomes de usuário diferentes para dois hosts. Você também pode usar curingas no nome do arquivo, como *
.