Como copiar uma pasta do controle remoto para o local usando scp?

Como copiar uma pasta de um host remoto para um host local utilizando o scp?

Eu utilizo ssh para fazer login no meu servidor.
Então, eu gostaria de copiar a pasta remota foo para o local /home/user/Desktop.

Como conseguir isto?

Solução
scp -r user@your.server.example.com:/path/to/foo /home/user/Desktop/

De man scp (Ver manual online)

-r Copiar recursivamente diretórios inteiros

Comentários (11)

Para usar a potência total de **scp*** você precisa passar pelos próximos passos:

  1. Autorização de chave pública
  2. Criar pseudônimos ssh

Então, por exemplo, se você tiver este **~/.ssh/config***:

Host test
    User testuser
    HostName test-site.com
    Port 22022

Host prod
    User produser
    HostName production-site.com
    Port 22022

você'vai se salvar da entrada de senha e simplificar scp sintaxe como esta:

scp -r prod:/path/foo /home/user/Desktop   # copy to local
scp -r prod:/path/foo test:/tmp            # copy from remote prod to remote test

Mais adiante, você será capaz de usar a conclusão do caminho remoto:

scp test:/var/log/  # press tab twice
Display all 151 possibilities? (y or n)

Actualização:

Para permitir o bash-completion remoto, você precisa ter bash-shell em ambos e hosts, e bash-completion funcionando corretamente. Para mais informações, consulte as perguntas relacionadas:

Como ativar o auto-completamento para caminhos remotos ao usar scp?
Conclusão da aba de nome de arquivo SCP

Comentários (10)

É melhor comprimir primeiro o catálogo no servidor remoto:

tar czfP backup.tar.gz /path/to/catalog

Em segundo lugar, faça o download a partir do controle remoto:

scp user@your.server.example.com:/path/to/backup.tar.gz .

No final, extraia os arquivos:

tar -xzvf backup.tar.gz
Comentários (2)