¿Cómo copiar una carpeta de remoto a local usando scp?

¿Cómo copiar una carpeta del host remoto al local utilizando scp?

Utilizo ssh para entrar en mi servidor.
Luego, me gustaría copiar la carpeta remota foo a la local /home/user/Desktop.

¿Cómo conseguirlo?

Solución
scp -r user@your.server.example.com:/path/to/foo /home/user/Desktop/

De man scp (Ver manual en línea)

-r Copiar recursivamente directorios enteros

Comentarios (11)

Para utilizar toda la potencia de scp hay que seguir los siguientes pasos:

  1. Autorización de clave pública
    1. Crear alias ssh

Entonces, por ejemplo si tienes esto ~/.ssh/config:

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

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

te ahorrarás la introducción de contraseñas y simplificarás la sintaxis de scp así:

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

Además, podrás utilizar el completamiento remoto de la ruta:

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

Actualización:

Para habilitar el completamiento remoto de bash necesitas tener bash-shell en ambos hosts y, y que el completamiento de bash funcione correctamente. Para más información vea las preguntas relacionadas:

¿Cómo habilitar el autocompletado de rutas remotas cuando se usa scp?
Completar la pestaña de nombre de archivo SCP

Comentarios (10)

Es mejor comprimir primero el catálogo en el servidor remoto:

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

En segundo lugar, descargar desde el remoto:

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

Al final, extrae los archivos:

tar -xzvf backup.tar.gz
Comentarios (2)