Comando SCP para copiar ficheros entre servidores
El comando SCP es la versión segura del comando CP. De ahí que se llame Secure CoPy. Es una extensión del comando SSH y permite que se puedan copiar archivos entre distintos servidores o máquinas de forma segura, pidiendo autenticación previa.
El formato del comando es el siguiente:
scp [servidor origen]:[archivo] [servidor destino]:[archivo]
Donde [archivo] puede ser un archivo como tal o una ruta de un archivo, o una ruta de una carpeta:
- Ejemplo de ruta de archivo: /home/usuario/archivo.txt
- Ejemplo de ruta de carpeta: /home/usuario/carpeta
- Ejemplo de archivo: archivo.txt
La última opción es cuando estamos sobre la carpeta en la que se encuentra el archivo, como es obvio.
Después del usuario@servidor hay que usar el signo de los dos puntos : para indicar a continuación el archivo o ruta de lo que se quiere copiar.
Copiar de mi servidor a otro
Viendo los ejemplos anteriores, el caso de querer copiar un archivo desde mi máquina a otra, tendremos que hacer lo siguiente:
scp archivo.txt usuario@dominio.com:/home/usuario/
En este caso, hemos puesto como servidor destino el usuario y el dominio, pero podemos usar también como alternativa:
- Con la ip de la máquina: usuario@192.168.1.15
- Con el nombre de la máquina: usuario@srvpruebas
Cuando pulsemos el intro nos pedirá la contraseña del usuario de la máquina destino para que nos permita realizar la copia.
Copiar de otro servidor al mío
Esto sería al contrario, copiar desde un servidor al nuestro.
scp usuario@dominio.com:/home/usuario/ .
En este caso he puesto el punto para indicar que lo copie en la carpeta que me encuentro. Pero podría haber puesto también por ejemplo /home/usuario/carpeta para que lo copiara en esa ruta.
Copiar entre dos servidores
Si queremos realizar la copia entre servidores en los que no estamos logados, es decir, servidores ajenos al que estamos conectados, tenemos que hacer lo siguiente:
scp usuario_uno@servidor1:/home/usuario_uno/archivo.txt usuario_dos@servidor2:/home/usuario_dos/
Aquí nos pedirá las credenciales de ambos usuarios para poder realizar la copia.
Copia recursiva con el comando SCP
Si queremos copiar una carpeta con todos sus archivos, tenemos que usar el parámetro -r.
scp -r /carpeta usuario@servidor:/home/usuario/carpeta-destino
Esto yo no lo recomiendo, sobre todo si la carpeta contiene cientos de archivos y muy pequeños. La copia puede tardar demasiado. Para estos casos es recomendable comprimirla primero, copiar el archivo comprimido, y descomprimir el servidor destino. Ahorrarás mucho tiempo.
Para comprimir arhivos en linux te recomiendo el tutorial: comprimir y descomprimir archivos en linux
Comando SCP con puerto
Si necesitas especificar el puerto del host remoto debes usar el parámetro:
-P [puerto]
donde -P debe ser en mayúsculas. Ejemplo:
scp -P 80 archivo.txt usuario@dominio.com:/home/usuario/
Fuente: https://www.javierrguez.com/copiar-archivos-de-un-servidor-a-otro-en-linux-con-el-comando-scp/