En este post te mostraré un ejemplo sencillo sobre cómo usar scp para copiar archivos entre dos computadoras, ya sea que copiemos desde A hacia B o desde B hacia A.
scp significa secure copy y, aunque suene redundante, copia archivos de manera segura, algo así como ssh.
Voy a explicar todo con ejemplos.
SCP
Para ejemplificar usaré mi computadora con Windows y mi Raspberry Pi 4. En la vida real podrían ser dos servidores separados geográficamente, una máquina virtual, etcétera.
Llamaremos a mi computadora con Windows cliente, y a la Pi servidor. Vamos a ver cómo copiar de cliente a servidor, y de servidor a cliente.
Vamos a ejecutar todos los comandos desde el cliente, incluso para copiar un archivo hacia el servidor.
Sintaxis de scp
La sintaxis es:
scp origen destino
Cuando el origen o destino son algo remoto, indicamos el usuario y la ip a la que hay que conectarse. Suponiendo que copiamos desde un host remoto sería:
scp usuario@ip:ruta_del_archivo destino
Con los ejemplos quedará mejor explicado. Por favor nota que los dos puntos (:
) separan al usuario con host, de la ruta.
Copiar de cliente a servidor
Ejecutamos:
scp escribir_contenido.py pi@192.168.1.79:/home/pi/
El origen es escribir_contenido.py
, aquí podría igualmente ser la ruta absoluta de un archivo.
El destino es /home/pi/
dentro del servidor con la ip 192.168.1.79
, por ahora nos estamos conectando como el usuario pi
. Al conectarnos se nos pedirá la contraseña:
Así que básicamente estamos subiendo o enviando un archivo. Si en el servidor listamos el contenido veremos el archivo que subimos:
Usar scp para copiar de servidor a cliente
Veamos el proceso inverso; ahora vamos a descargar un archivo. Recuerda que esto igualmente lo haremos dentro del cliente.
Primero, en el servidor, observamos el archivo que vamos a copiar y vemos su ruta:
La ruta absoluta es /home/pi/k.png
así que ejecutamos:
scp pi@192.168.1.79:/home/pi/k.png C:\Users\usuario\Desktop\
Ahora el origen es el servidor remoto, y el destino una ruta local. Al ejecutar, la imagen llamada k.png estará en mi escritorio:
Copiar directorio completo
También puedes copiar una carpeta completa. En ese caso la sintaxis es:
scp -r directorio_local usuario@host:/home/parzibyte
Por ejemplo:
scp -r dist usuario@host:/home/parzibyte
Va a copiar la carpeta dist
y todo su contenido en /home/parzibyte
, creando la carpeta dist
en /home/parzibyte
. Si quisieras copiar todo el contenido, recomiendo copiar toda la carpeta y luego con SSH mover el contenido situándote en la carpeta y ejecutando mv dist/* .
Conclusión
Así es como puedes usar scp para copiar archivos entre servidores. En este caso copié de Windows hacia Linux, pero podría ser igualmente de Linux a Linux.
Si quieres, puedes leer más sobre Linux en mi blog.