Transfiriendo archivos con openssh

SCP viene de secure copy, es una implementación de OpenSSH para realizar copias seguras a través de una red e Internet, en sustitución de rcp.

Un requisito es que la máquina a donde nos conectamos tenga un servidor de SSH activo (no importa que el cliente no). La sintaxis básica es:

scp [opciones] origen destino

Aquí aclaramos que hemos simplificado la sintaxis para facilitar la lectura, sin embargo puede ser más intrincada. cuando decimos [opciones], son los parámetros con que operamos; origen es el archivo o archivos que vamos a copiar y destino es a donde se va a copiar. Un ejemplo muy sencillo es el siguiente:

scp miarchivo.txt usuario@10.4.1.254:/home/carpeta/

En este caso, sólo tomamos un archivo local (miarchivo.txt) y lo pasamos a un servidor dentro de la LAN, donde vemos las siguientes características:

  • usuario es el nombre del usuario activo en el servidor de destino, no necesariamente tiene que ser el mismo que el que ejecuta el comando localmente.
  • @10.4.1.254 indica “en 10.4.1.254”, es posible sustituir la IP por el nombre de dominio del equipo, como por ejemplo, “miservidor.net”.
  • :/home/carpeta/ define la carpeta donde se guardaran los archivos, donde debe tener permisos el usuario del primer punto. Sírvanse notar los dos punto (:), que separan el servidor de la carpeta interna.

El caso inverso, donde copiamos un archivo remoto a nuestra máquina es:

scp usuario@10.4.1.254:/home/carpeta/miarchivo.txt /home/miusuario

En todos los casos, es necesario escribir el password del usuario remoto, en caso contrario no podrá conectarse.

Usando diferentes opciones:

:

scp -r ~/Documentos/respaldo/ usuario@10.4.1.254:/home/carpeta/

Con el parámetro -r se realiza recursivamente la copia, tomando todos los archivos y carpetas que tenemos bajo la ubicación indicada, dejando una copia en el servidor de destino con la siguiente ruta: /home/carpeta/respaldo/. Noten esta sutil diferencia:

scp -r ~/Documentos/respaldo/* usuario@10.4.1.254:/home/carpeta/

A diferencia del anterior, la ruta final será /home/carpeta/, ya que es el contenido y no la carpeta padre la que copia. Otra variación es:

scp -r -p ~/Documentos/respaldo/ usuario@10.4.1.254:/home/carpeta/

El parámetro -p mantiene la fecha, hora, usuario y privilegios de los archivos, muy util cuando clonamos la estructura de un servidor. Sino queremos ver las barritas de avance, usamos:

scp -r -q ~/Documentos/respaldo/* usuario@10.4.1.254:/home/carpeta/

Cuando lo soportan tanto por el cliente como el servidor, podemos hacer que los archivos se compacten al vuelo así:

scp -r -C ~/Documentos/respaldo/* usuario@10.4.1.254:/home/carpeta/

Si el puerto de SSH se ha cambiado digamos el 1995, hacemos los siguiente:

scp -r -P 1995 ~/Documentos/respaldo/* usuario@10.4.1.254:/home/carpeta/

Notese como -p y -p son dos parámetros diferentes. Finalmente, si tenemos un ancho de banda limitado, podemos definirlo en KB de la siguiente manera:

scp -r -l 20 ~/Documentos/respaldo/* usuario@10.4.1.254:/home/carpeta/

Algunas ventajas adicionales del uso de este comando es que es más rápido (en modo texto) que FTP en casi el 50% dado que el proceso de I/O es de archivo en archivo, no leyendo los archivos sino hasta que es su turno. Los usuarios de Windows pueden realizar este proceso mediante el programas como WinSCP. Recomendamos leer el man scp para que conozcan todas las opciones.



scp file-to-send user@host:/path/to/place/file

$ scp /etc/passwd user2@earth:
user password:
passwd 100% |*****************************| 918 00:00

scp usuario@host:directorio/ArchivoOrigen ArchivoDestino
scp ArchivoOrigen usuario@host:directorio/ArchivoDestino


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: