Transferencia de archivos

Los protocolos para transferencia de archivos permiten copiar archivos entre dos computadoras, a través de una red. Se verán a continuación tres programas para transferencia de archivos: ftp, rcp y scp.

Transferencia de archivos por ftp

La principal diferencia entre ftp y los otros comandos radica en el carácter interactivo de éste comando. Esto significa que ftp funciona a la manera de un shell: primeramente establece la conexión con el sistema remoto y luego queda a la espera de que el usuario le indique, por medio de un lenguaje de comandos, las operaciones a realizar.

Para iniciar una sesión FTP, debe ejecutarse en comando ftp indicándole como parámetro el nombre de la computadora remota, por ejemplo:

Aquí, el usuario jperez inicia una conexión FTP a Canopus. Luego de indicar que la conexión se ha establecido y que el servidor FTP se encuentra listo, ftp pide el nombre de usuario con el que se va a ingresar al host remoto, y luego su correspondiente password. Si la misma se ingresa correctamente, el sistema remoto informa su tipo (en este caso, UNIX) y el modo de transferencia de archivos por defecto (en este caso, transferencia binaria) y queda a la espera de comandos del usuario.

Adicionalmente de permitir la transferencia de archivos hacia cuentas del sistema remoto (esto es, la conexión se establece indicando una identidad de usuario registrada en el host remoto e ingresando la palabra clave de esa cuenta), ftp fue diseñado para permitir el acceso de usuarios anónimos a grandes repositorios de archivos, de acceso público. Usualmente los servidores FTP utilizan el nombre de usuario anonynmous para los accesos del público en general, quienes deberán utilizar su dirección de correo electrónico como password:

jperez@antares:$ ftp canopus
Connected to canopus.galaxia.org.ar
220 canopus.galaxia.org.ar FTP server ready.
Name(antares:jperez): anonymous
331 Guest login ok, send your complete e-mail address as password.
Password: jperez@canopus.galaxia.org.ar
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> _

Los dos comandos básicos de FTP para transferencia de archivos son put (para enviar un archivo al host remoto) y get (para obtener un archivo desde el host remoto). Ambos operan con un único archivo indicado como parámetro, desde y hacia el directorio actual (tanto local como remoto). Por ejemplo, el siguiente comando:

ftp> put informe.doc
local: informe.doc remote: informe.doc
200 PORT command successful.
150 Opening BINARY mode data connection for informe.doc.
226 Transfer complete.
1908642 bytes sent in 2.34 secs (13.22 Kbytes/sec)
ftp> _

transfiere el archivo informe.doc desde el directorio actual local (esto es, el directorio desde el cual se invocó al programa ftp en el host local) al directorio actual en la computadora remota. Luego de la transferencia, ftp informa la cantidad de bytes transmitidos y la velocidad de la transferencia.

Por otra parte, el comando:

ftp> get informe.doc
local: informe.doc remote: informe.doc
200 PORT command successful.
150 Opening BINARY mode data connection for informe.doc.
226 Transfer complete.
1908642 bytes received in 2.34 secs (13.22 Kbytes/sec)
ftp> _

El directorio actual en la computadora remota puede averiguarse por medio del comando pwd:

ftp> pwd
257 "/home/jperez" is current directory.
ftp> _

y puede cambiarse utilizando el comando cd, e indicando una trayectoria absoluta o relativa (de manera totalmente análoga al comando cd del shell):

ftp> cd documentos
250 CWD command successful.
ftp> pwd
257 "/home/jperez/documentos" is current directory.
ftp> _

FTP cuenta con un extenso juego de comandos, cuya lista puede obtenerse tipeando ?. Se ofrece a continuación un resumen de algunos comandos de utilización frecuente:

 
ls  Lista el contenido del directorio actual
binary Fuerza el modo de transferencia a BINARIO
ascii  Fuerza el modo de transferencia a ASCII (poco recomendable!)
lcd  Cambia (o muestra) el directorio actual local
delete  Borra un archivo en el host remoto
hash  Muestra por pantalla una marca cada cierta cantidad de bytes transmitidos

mput  

mget 

Permiten realizar transferencias múltiples, por medio de la utilización de comodines
prompt off  Deshabilita la confirmación archivo por archivo en las transferencias múltiples
 

La sesión de FTP finaliza cuando el usuario indica el comando bye:

Transferencia de archivos por rcp y scp

Los comandos rcp y scp son utilerías de línea de comandos para transmitir archivos; esto es, no reciben comandos interactivamente desde el usuario, sino que su funcionamiento se indica por medio de parámetros en la línea de comandos del shell. Es esta característica lo que, al contrario que ftp, los hace útiles para la programación de scripts que realicen transferencias automáticas de archivos entre computadoras.

rcp pertenece al mismo paquete de comandos que rlogin, mientras que scp pertenece al de ssh. Así la diferencia entre ambos radica en el nivel de seguridad: rcp transfiere los archivos en su formato original, mientras que scp lo hace de manera encriptada.

Ambos comandos tienen la misma sintaxis:

rcp [-l nombre_de_usuario] origen destino

scp [-l nombre_de_usuario] origen destino

en donde el parámetro -l es opcional, sirviendo para acceder al host remoto bajo otro nombre de usuario. Los parámetros origen y destino son las especificaciones (expresadas como trayectorias absolutas o relativas) del archivo a transmitir y la ubicación final del mismo respectivamente; uno de ellos deberá hacer referencia a la computadora local, mientras que el otro deberá referirse a la computadora remota. La sintaxis para archivos remotos es la siguiente:

nombre_del_host_remoto:[[trayectoria]archivo]

Como puede verse, la única parte mandatoria es el nombre del host remoto; si el resto se omite, el archivo transmitido será copiado bajo el mismo nombre en el directorio de login del usuario en la computadora remota. Si el nombre de archivo se omite, la copia se hará en el directorio remoto indicado bajo el mismo nombre; si la trayectoria especificada es relativa, se interpretará como relativa al directorio de login del usuario en la computadora remota.

Por ejemplo, los siguientes comandos transfieren archivos de la maquina local al host remoto Canopus:

Para transferir desde el host remoto al host local, los comandos serían los siguientes:

scp siempre pide password antes de realizar la copia; rcp, por su parte, requiere que el usuario haya configurado su cuenta remota para accederla sin solicitar password, por medio del archivo .rhosts (tal como se describe en la sección de rlogin)