Subir y bajar ficheros de mi cuenta usando scp (Linux y Mac OS, en el terminal)

En el siguiente tutorial explicamos los usos básicos del comando scp, utilizado para copiar ficheros entre nuestro Linux/Mac local y nuestra cuenta del Laboratorio (en los dos sentidos).

Atención: scp es un comando complejo y con multitud de opciones. Lee detenidamente la página de manual de scp (introduce en el terminal man scp)

Antes de entender scp: entendiendo cp

Antes de explicar ejemplos básicos del comando scp, haremos un breve repaso por el comando cp. El comando cp copia un fichero (o directorio) de un origen a un destino. El uso fundamental de cp es el siguiente

cp fichero-origen fichero-destino

Por ejemplo, si queremos copiar el fichero hola.pp a hola-copia.pp haremos

cp hola.pp hola-copia.pp

Por supuesto y porque se trata de una copia, ambos ficheros existen al finalizar el comando.

El comando scp

El funcionamiento del comando scp es muy parecido en esencial al comando cp, la única diferencia es que o origen o destino, es un lugar remoto, entendiendo por lugar remoto un fichero en una máquina que escucha SSH (por ejemplo, una máquina del Laboratorio) en un lugar concreto del sistema de ficheros.

¿Cómo especificamos que origen o destino es un lugar remoto? Con la sintaxis usuario@maquina:/ruta/al/fichero/

Por ejemplo, si queremos copiarnos el fichero /tmp/kk de la máquina remota alpha.aulas.gsyc.urjc.es en nuestro directorio HOME de nuestro Linux local, haremos lo siguiente:

scp agutierr@alpha.aulas.gsyc.urjc.es:/tmp/kk /home/agutierr/

Como podemos ver, acorde a la sintaxis que hemos visto,

  • Origen: el origen es un lugar remoto, por eso se especifica en primer lugar. Es necesario indicar el usuario remoto (si no coincide con el usuario de nuestro Linux local) seguido de una arroba, y el nombre DNS de la máquina. A continuación y separado por dos puntos, se especifica el fichero que se quiere copiar (con una notación de ruta absoluta, comenzando por una barra)
  • Destino: el fichero o directorio donde se ubicará el fichero origen. Lógicamente, si el origen era remoto, el destino será local, por eso es especifica únicamente el directorio donde se ubicará.

Atajos en scp

  • Si el usuario remoto coincide con nuestro usuario local, nos lo podemos ahorrar (incluída la arroba). Solo es necesario escribir el nombre de la máquina seguido de los dos puntos y la ruta del fichero o directorio
  • Podemos indicar una ruta relativa en el destino indicando los dos puntos seguidos del carácter ~ , que denota nuestro directorio HOME en la máquina remota.
  • En este caso, en el destino podemos indicar un . para indicar que se copie en el directorio de trabajo.

Copia de Directorios

Si lo que necesitas es copiar un directorio, necesitarás usar el modificador -r (recursive).

Ejemplo: me quiero copiar el directorio de mi HOME del Laboratorio llamado urjc (Ruta completa: /home/alumnos/amayoral/urjc/) a mi Linux local.

  • Origen: la máquina remota, directorio urjc dentro de mi HOME
  • Destino: Mi Linux

Por lo tanto, el comando será tal que así:

agutierr@pepinillo ~ $ scp -r amayoral@alpha.aulas.gsyc.urjc.es:/home/alumnos/amayoral/urjc/ .
amayoral@alpha.aulas.gsyc.urjc.es's password: 

Después de introducir el password, se copiaría todo el directorio remoto urjc en el directorio en el que hayas invocado el comando scp.

Más ejemplos

Copiar el fichero practica.pp  de mi Linux local (origen), a mi cuenta del Laboratorio en el directorio raíz (mi HOME) (destino)

scp pratica.pp amayoral@alpha.aulas.gsyc.urjc.es:~

Copiar el fichero practica.pp de mi Linux local (origen) a mi cuenta del Laboratorio, (destino) pero a otro directorio (el directorio (/home/alumnos/amayoral/urjc/fdp/)

scp practica.pp amayoral@alpha.aulas.gsyc.urjc.es:/home/alumnos/amayoral/urjc/fdp/

Copiar de mi cuenta del Laboratorio (origen) el fichero practica.pp que está en el directorio /home/alumnos/amayoral/urjc/fdp/practica1 a mi Linux (destino):

scp amayoral@alpha.aulas.gsyc.urjc.es:/home/alumnos/amayoral/urjc/fdp/practica1/practica.pp .

(Nótese del punto final separado por un espacio)

Copiar el directorio completo fdp de mi Linux Local (origen) a mi cuenta del Laboratorio (destino)

scp -r fdp/ amayoral@alpha.aulas.gsyc.urjc.es: 

(Nota los dos puntos al final del comando, sin espacios)