Para copiar archivos entre servidores linux es muy útil usar el comando SCP. Ahorra tiempo, ya que no necesitamos tener que descargarlos previamente para poder subirlos al servidor destino. La transferencia de archivos se hace directamente.
Tabla de contenidos
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/



¡Hola! Soy Javier. Soy informático y me gusta documentar todo lo que aprendo. En mi blog te enseño todo lo que sé y cómo puedes aprender a crear tu propia web, mejorar el SEO y aplicar técnicas de Marketing Digital para conseguir mayor visibilidad. Suscríbete para no perderte ninguna de mis guías sobre WordPress, posicionamiento SEO o Marketing Digital.

Hola
En la carpeta data4 tengo los archivos
test1.txt
test2.txt
test3.txt
Con un solo archivo si lo puedo hacer, pero al seleccionar varios no funciona
He intentado separando por coma y también dejando un espacio pero no funciona:
Quisiera enviar varios archivos algo así:
scp db2inst1@10.20.30.40:/db2/data4/test1.docx,test1.docx,test1.docx ~/Users/demo/Desktop/Datos/
Lo estoy haciendo desde una terminal de MacBook
Desde ya mil gracias
Saludos
En vez de indicar todos los archivos, usa el asterisco poniendo *.docx
Hola Buen dia
Me podrian ayudar es que voy a enviar una carpeta desde un terminal y al momento de enviarlo me sale el siguiente mensaje
root@52.116.193.118: Permission denied (publickey).
scp: Connection closed
lo estoy haciendo desde terminal de MacBook
gracias
No sé decirte. No tengo Mac. Parece un error de seguridad.
Hola buenos dias como podria copiar archivos usando scp entre un servidor unix y un servidor linux sin que pida contraseña, he creado una keygen (ya habia una creada) pero igual sigue pidiendo la contraseña, alguna sugerencia lo agradeceria
No controlo mucho esa parte, pero sé que hace de esta forma. Mira este tutorial sobre cómo realizar una conexión SSH sin contraseña. Un saludo.
Buenas Tardes, tengo una pregunta puedo copiar un archivo log de un servidor que esta en una ruta que esta en ubuntu a mi equipo personal en windows
Yo utilizo WinSCP, que mediante SFTP te puedes descargar los archivos a tu pc.
Hola buen Articulo, tengo una duda usando el comando scp agregando el usuario@server donde tomo el file y donde lo dejo, me pide un password, pero es posible adelantarme a poner el password en la linea de comando dentro del scp ? o como puedo enviarlo para que ya no me lo pida y me realice la copia ?