En el siguiente articulo vamos a explicar un comando bastante útil que podemos utilizar en Linux (Ubuntu, Debian, Red Hat, CentOS, Fedora …) a la hora de compartir/copiar ficheros entre equipos mediante SSH. El comando en cuestión es el llamado: scp de Linux.
Si queremos transferir un archivo dentro de una misma red de un equipo a otro, podemos utilizar el comando SCP (Secure Copy Protocol) de Linux entre otras de las muchas alternativas que hay para copiar los archivos a otro host sin eliminarlos en el origen y de forma segura, puesto que trabaja bajo el protocolo ssh (Secure SHell).
Tenemos diferentes casos para pasar un archivo de una ubicación a otra:
Tabla de Contenidos
1 – Archivo local a dirección remota
En este caso vamos a copiar un fichero desde nuestra maquina local a una máquina remota.
scp ubicados en el equipo origen
scp directorio_origen/nombre_archivo usuario@ip_destino:directorio_destino
En el ejemplo siguiente vemos como el fichero que enviamos tiene el nombre fichero_de_prueba.zip por lo que el comando seria el siguiente:
scp /home/ubuntu1-blogdelbit/fichero_de_prueba.zip ubuntu2-blogdelbit@192.168.1.198:/home/ubuntu2-blogdelbit
- /home/ubuntu1-blogdelbit/fichero_de_prueba – ubicación del archivo
- ubuntu2-blogdelbit@192.168.1.198:/home/ubuntu2-blogdelbit – nombre, ip y directorio destino
Nos pedirá aceptar la conexión (yes) y a continuación la contraseña de la maquina destino. Esperamos que se envié el fichero y listo.
Por defecto scp trabaja en el puerto 22 puesto que utiliza el protocolo SSH mencionado al principio del articulo. Si queremos cambiarlo tendremos que usar la opción -P por lo que sea quedaría de la siguiente manera:
scp -P 2233 /home/ubuntu1-blogdelbit/fichero_de_prueba.zip ubuntu2-blogdelbit@192.168.1.198:/home/ubuntu2-blogdelbit
Si en lugar de subir un archivo .zip como es el caso, queremos subir una directorio que tiene mas ficheros/directorios dentro ejecutaremos el comando con la opción -r por lo que se quedaría de la siguiente manera:
scp -r 2233 /home/ubuntu1-blogdelbit/carpeta_de_prueba ubuntu2-blogdelbit@192.168.1.198:/home/ubuntu2-blogdelbit
2 – Archivo remoto a máquina local
En este caso estamos ubicados en el equipo destino donde queremos tener el fichero y llamamos por así decirlo a la maquina remota para que nos lo traiga.
scp ubicados en el equipo destino
scp usuario@ip_origen:directorio/nombre_archivo directorio_destino
A continuación observamos como «traemos» el fichero de la maquina remota a la maquina local.
Igual que antes nos pedirá la contraseña de la maquina destino (ubuntu1-blogdelbit) para procesar la solicitud.
- ubuntu1-blogdelbit@192.168.1.145:/home/ubuntu1-blogdelbit/fichero_de_prueba.zip – usuario, ip, carpeta y archivo remoto
- /home/ubuntu2-blogdelbit – directorio destino local
Las opciones anteriores (-P y –r) también podemos aplicarlas para esta forma de transferencia.
3 – Archivo remoto a ubicación remota
En la última opción veremos como transferir un fichero de un equipo remoto a otro también remoto, es decir, sin estar conectados a ninguna de estas dos máquinas. Lo haremos con el siguiente comando:
scp ubicados fuera del equipo origen y destino
scp usuario_origen@ip_origen:directorio/nombre_archivo usuario_destino@ip_destino:directorio_destino
** IMPORTANTE: En esta opción tenemos que asegurarnos que el directorio destino este creado (mkdir directorio_destino), en caso contrario es muy probable que nos de error **