Primeiro, verifique se você consegue se conectar via SSH da máquina remota à máquina local. Para este propósito, você deve copiar sua chave privada no diretório /root/.ssh
e tem restrições suficientes - sudo chmod 400 /root/.ssh/id_rsa
. Além disso, você pode criar o arquivo /root/.ssh/config
desta forma:
$ sudo cat /root/.ssh/config
Host my-localhost-name
HostName 77.71.11.10
IdentityFile ~/.ssh/id_rsa
User my-user-name
Port 22122
Agora você pode usar rsync
da máquina remota desta maneira:
sudo rsync -avzp -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress my-localhost-name:/var/www/<my-folder>/ /var/www/<my-folder>/
Caso você não tenha o arquivo /root/.ssh/config
, o comando deve ser:
sudo rsync -avzp -e "ssh -i /root/.ssh/id_rsa -p 22122 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress [email protected]:/var/www/<my-folder>/ /var/www/<my-folder>/
Onde:
-
-a
,--archive
é uma maneira rápida de dizer que você deseja recursão e deseja preservar quase tudo (com -H sendo uma omissão notável). A única exceção à equivalência acima é quando --files-from é especificado, no qual o caso -r não está implícito. -
-v
,--verbose
aumenta a quantidade de informações que você recebe durante a transferência. Por padrão, o rsync funciona silenciosamente. -
-z
,--compress
- compacta os dados do arquivo durante a transferência. -
-p
,--perms
faz com que o rsync de recebimento defina as permissões de destino como as mesmas permissões de origem. (Veja também a opção --chmod para uma maneira de modificar o que o rsync considera como as permissões de origem.) -
-e
,--rsh=COMMAND
permite que você escolha um programa shell remoto alternativo para usar na comunicação entre as cópias local e remota do rsync ...Além disso, você pode adicionar aqui opções adicionais ao comando
ssh
. As opções usadas no exemplo acima-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
são úteis para manter o Rsync silencioso e não avisar sempre que você se conectar a um novo servidor. -
--progress
mostra o progresso durante a transferência.
Uma barra à direita na origem altera esse comportamento para evitar criando um nível de diretório adicional no destino. Você pode pense em um
/
à direita em uma fonte como significando "copie o conteúdo de este diretório "ao contrário de" copiar o diretório pelo nome ", mas em Em ambos os casos, os atributos do diretório contido são transferido para o diretório de contenção no destino. Dentro Em outras palavras, cada um dos seguintes comandos copia os arquivos da mesma forma, incluindo a definição dos atributos de/dest/foo
:rsync -av /src/foo /dest rsync -av /src/foo/ /dest/foo
Fontes: