El Protocolo de Transferencia de Ficheros (File Transfer Protocol o, para abreviar, FTP) es uno de los pilares de Internet junto con el acceso a p�ginas Web (http). Durante mucho tiempo ha sido el servicio TCP/IP de Internet m�s utilizado, debido a que cualquier distribuci�n Linux (as� como en otros Sistemas Operativos) incluye el software necesario, muy f�cil de usar y configurar, y de reducido tama�o.
Tal y como se comenta en la documentaci�n (man ftp), "el Protocolo de Transferencia de Ficheros (FTP) es un protocolo de la familia TCP/IP usado para transferir ficheros entre m�quinas que ejecutan TCP/IP (aunque hay programas estilo FTP para otros protocolos). Este protocolo permite transferir ficheros y manipular directorios en m�quinas remotas. No est� dise�ado para permitir el acceso a otra m�quina con el fin de ejecutar programas (para eso tenemos telnet), pero resulta la mejor utilidad para manipulaci�n de ficheros.".
Esto quiere decir que una m�quina con un servidor de ftp dispone de una estructura de directorios con ficheros y que adem�s es capaz de permitir a cientos o miles de usuarios la recogida de ficheros o env�o de nuevos ficheros al servidor.
Cuando hablamos de FTP estamos hablando (para explicarlo de una manera sencilla) de la descarga o subida de ficheros en Internet entre 2 m�quinas, y es lo que permite entrar en ftp.idsoftware.com, por ejemplo, y bajarse la �ltima versi�n del ejecutable de Quake II para Linux. Tambi�n nos permite, por ejemplo, entrar en nuestro directorio privado en nuestro Proveedor de Servicios de Internet para poner all� nuestra p�gina Web con el fin de que sea accesible desde el exterior. Para hacer esto disponemos de m�ltiples posibilidades debido a la disponibilidad de software para ello en Linux, desde ftp hasta ncftp, wget, etc..
As� pues, no es necesario utilizar el navegador de WWW para descargar programas de direcciones que comienzan por ftp://, ya que disponemos en nuestro sistema de herramientas mucho m�s potentes para tales menesteres: los programas de ftp. Aqu� aprenderemos los comandos b�sicos as� como la manera de instalar nuestro propio ftp an�nimo para que otros accedan a nuestros ficheros desde el exterior.
Comenzaremos hablando del programa ftp (lo que muchos habituales de Internet llaman �el t�pico ftp de toda la vida�, conocido en las Universidades y sencillos terminales en modo texto cuando no se dispon�a (o no se necesitaba) del entorno gr�fico.
Si se necesita transferir un fichero a otra m�quina de una red o recuperarlo desde otra (y la red bien puede ser Internet), lo que necesitamos es un programa como ftp. Ftp es un programa sencillo y que viene en cualquier distribuci�n de Linux (en el caso del autor, el paquete instalado es ftp-0.10-2.rpm). Como la mejor manera de aprender es con ejemplos (antes de ver todas las posibilidades que ofrece) supongamos que un compa�ero nos comenta que es posible obtener la �ltima version de Netscape Communicator en el ftp de la direcci�n ftp://ftp.juan.es/pub/programas. Ser�a muy sencillo introducir esta URL (direcci�n de recurso de Internet) en Netscape Navigator para que �ste nos haga de cliente de FTP, pero supongamos que no estamos dentro de XWindow (o que no nos apetece arrancar el navegador, o incluso que nos apetece bajarnos este fichero en varias sesiones, tal y como hacen GetRight y NetVampire para Windows, y que podremos hacer con ftp). Para conseguir nuestro objetivo hacemos:
[root@localhost sromero]# ftp ftp://ftp.juan.es Connected to ftp.juan.es. 220 Juan FTP server (Version wu-2-41) ready. Name (ftp.juan.es:sromero):_En ese momento el programa habr� accedido a la m�quina remota, quien nos est� pidiendo que nos identifiquemos (Name) con nuestro nombre de usuario (tambi�n podr�amos haber entrado con ftp y abrir el servidor con open ftp.juan.es). Si no somos usuarios habituales de dicha m�quina (no poseemos ninguna cuenta especial en la misma), tendremos que identificarnos como anonimo (anonymous) y como password o palabra clave dar nuestra direcci�n de correo electr�nico, proceso conocido como login o ftp an�nimo, y que nos permitir� entrar en la m�quina remota si �sta tiene permitido el acceso an�nimo. As� pues contestamos:
Name (ftp.juan.es:sromero) anonymous 331 Guest login ok, send your complete e-mail address as password. Password: [email protected]Con lo que la m�quina remota nos dar� acceso a su sistema de ficheros ftp.
230- �Bienvenido al servidor FTP de Juanito! 230 Guest login ok, access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> _En ese momento nos percatamos de que la terminal de texto se ha quedado en espera de introducci�n de comandos por nuestra parte. Ante la pregunta de ��qu� puede hacerse ahora?� surge la respuesta: �estamos en un sistema Unix�, con lo que nada nos impide (si est�n dentro de aquel sistema) desplazarnos entre los distintos subdirectorios (ls, cd, etc.):
ftp> ls 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls. total 6 drwxr-xr-x 6 root root 1024 Jul 17 10:47 . drwxr-xr-x 6 root root 1024 Jul 17 10:47 .. drwxr-xr-x 2 root root 1024 Jul 17 10:47 bin drwxr-xr-x 2 root root 1024 Jul 17 10:47 etc drwxr-xr-x 2 root root 1024 Jul 17 10:47 lib drwxr-xr-x 2 root ftp 1024 Jul 31 09:17 pub 226 Transfer complete.A la vista de los directorios disponibles, vamos a pub/programas como se nos hab�a especificado.
ftp> cd pub 250 CWD command successful. ftp> cd programas 250 CWD command successful. ftp> ls 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls. total 3 drwxr-xr-x 6 root root 1024 Jul 17 09:18 . drwxr-xr-x 6 root root 1024 Jul 17 09:18 .. drwxr-xr-x 6 root root 10221024 Jul 17 09:18 netscape.rpmEs posible hacer uso del comando get para descargar un fichero (o mget para m�ltiples ficheros), pero antes n�tese que uno de los mensajes que se ley� al hacer el login fue "Using binary mode to transfer files", lo cual nos indica que hay 2 maneras de bajarse ficheros: los de formato texto y los binarios, y que debemos especificar el modo correcto para bajarse ficheros de cada tipo (el comando ascii especifica formato ascii mientras que binary especifica formato binario). En este caso no tendremos que teclear binary pues el sistema ya nos avisa de que por defecto se descargan ficheros en binario, de modo que ejecutamos get para obtener el fichero:
ftp> get netscape.rpmCon lo que obtendremos el fichero en nuestra m�quina tras esperar el tiempo necesario y tras el cual nos avisar� el propio programa de ftp.
�y si cuando llevamos 1 hora de conexi�n necesitamos apagar el sistema o se corta la conexi�n? �Y si simplemente queremos bajarnos un fichero de gran tama�o en diferentes sesiones, conect�ndonos por ejemplo media hora diaria?
Nada nos impide continuar la descarga de un fichero otro d�a y desde el punto en que nos quedamos (sin perder ni un s�lo bit) aunque se nos haya cortado la conexi�n en anteriores intentos. Para hacer esto disponemos del comando reget (con la misma sintaxis de uso que el comando get), el cual comprobar� la existencia de un fichero con el mismo nombre que el que pretendemos bajarnos en el directorio actual de tal modo que en caso de existir continuar� la descarga en el punto en que se quedo nuestro fichero incompleto, lo cual nos permitir� hacer de una manera muy c�moda y sencilla la descarga de grandes programas en varias sesiones, algo incluido en un programa con mucho tiempo y experiencia a sus espaldas y que algunos programas para Windows 95 pretenden vender como una gran novedad (v�ase GetRight o NetVampire).
Dicho de una manera sencilla: podemos comenzar a bajarnos un programa con get, cortar la descarga mediante CONTROL+C, salir del programa de ftp con quit, entrar al d�a siguiente y continuar con reget, repitiendo el proceso hasta completar la descarga o download del fichero.
ftp> get netscape.rpm (al rato CTRL+C) (Otro dia:) ftp> reget netscape.rpm
Otros comandos del ftp est�ndar son:
!: Ejecuta la shell para permitirnos la entrada de comandos en nuestro Linux. Con exit volveremos de nuevo al programa de ftp matando el shell. Si se especifica tras la admiraci�n un comando de Linux, �ste ser� ejecutado en la shell abierta.
Ejemplos:
!ls : har�a un dir en nuestra m�quina.
!xterm & lanzar�a otra xterm
etc.
ascii: especifica tipo de transferencia de ficheros ASCII, en contraposici�n a ficheros binarios (no texto).
binary: especifica tipo de transferencia binaria (por defecto).
bell: le indica al sistema que ejecute un pitido (bell) cuando se finalicen la ejecuci�n de los comandos. As� podemos ejecutar bell, y dejar un fichero de gran tama�o descarg�ndose, sabiendo que tras su finalizaci�n oiremos un BEEP, lo cual nos permite dejar la ventana minimizada y hacer cualquier otra tarea.
bye, quit: termina la sesi�n ftp y sale.
cd, dir, ls, list, mkdir, rmdir, pwd: �rdenes b�sicas de acceso a directorios, equivalentes a la del propio Sistema Operativo.
close: termina la sesi�n ftp sin salir del programa.
delete y mdelete: borran uno o varios ficheros en la m�quina remota.
Ejemplos:
delete netscape.rpm
mdelete *.doc
get y mget: recibir uno o varios ficheros de la m�quina remota.
Ejemplos:
mget *.doc
get "datos.doc"
reget: continuar bajando un fichero cortado anteriormente.
Ejemplo:
reget datos.doc
put y mput: enviar ficheros desde nuestra m�quina a la m�quina remota.
Ejemplo:
put fichero.html
open: conectar a un ftp remoto (ej: open ftp.xoom.com).
rename: renombrar fichero en la m�quina remota.
Ejemplo: rename juan.html index.html
user y pass: especificar nuestro nuevo nombre y password.
verbose: activar o desactivar modalidad informativa.
lcd: Cambiar directorio local. Su utilidad radica en que cuando hacemos un download, �ste ir� a parar al directorio local donde estemos, de modo que cambiando de directorio podemos dejar los ficheros que nos bajamos en los lugares adecuados.
Ejemplo:
lcd /home/sromero/downloads
help, ?: imprimir informaci�n de ayuda del programa local.
Se puede obtener m�s informaci�n sobre estos comandos en la p�gina man de ftp (man ftp), aunque la mayor�a de los comandos de ftp son bastante explicativos y suelen coincidir con sus equivalentes en Linux.
Una de las cosas que pregunta mucha gente en los diferentes canales del IRC o en las news consiste en la subida de su p�gina Web (creada en casa) a su directorio personal en su proveedor para que sea accesible al resto de usuarios de Internet. A�n hay mucha gente que no sabe realizar este proceso con lo que deja su espacio (que suele ser de 2Mb o m�s, dependiendo del servidor) libre en el servidor, y no aprovecha este servicio de Internet.
Lo primero de todo es crear nuestra p�gina Web, que no es m�s que un directorio (con sus posibles subdirectorios) lleno de htmls, im�genes, y un fichero index.html que ser� la p�gina inicial de la Web. Pero... �C�mo se pone dicha p�gina en nuestro ISP?
Para solucionar esto disponemos de nuestro potente programa de ftp, que sirve tambi�n para este tipo de acciones. Para ello una vez creada nuestra p�gina en casa, hacemos ftp a nuestro servidor (ejemplo: ftp ftp.arrakis.es), y el sistema nos pedir� la habitual identificaci�n.
En lugar de identificarnos como an�nimo (anonymous), lo hacemos con nuestro login y password (a veces necesitaremos utilizar los comandos user nombre, pass password) de acceso a nuestro servidor, con lo que tras la autentificaci�n entramos al servidor dentro de nuestro directorio personal (si contratamos en su d�a el servicio de p�gina Web), donde podremos preparar los directorios para nuestra p�gina mediante los comandos mkdir y cd, que act�a sobre el servidor remoto, y lcd, que act�a cambiando de directorio en nuestra propia m�quina.
Para ello hacemos lcd /home/usuario/donde_sea/web con lo cual ponemos el directorio actual en el especificado.
Una vez seleccionados lo directorios correctos, est� disponible el comando put nombrefichero (o mput, para multiples ficheros) para subir la p�gina (como otro fichero cualquiera) al servidor. Recuerde que la p�gina principal de su Web deber�a llamarse index.html si quiere que haya alguna p�gina por defecto en su direcci�n WWW, y que a partir de �sta debe estar la misma jerarqu�a de directorios que cre� en su PC durante la creaci�n de la misma.
Una vez subida la p�gina, salga del programa de ftp con quit y haga un sencilla prueba mediante su navegador habitual.
Lo que se va a comentar a continuaci�n es una manera muy sencilla de instalar un servidor de FTP an�nimo para que otros usuarios puedan acceder a �l mientras estemos conectados a Internet. Esto implica que podr�n recoger ficheros as� como dejarnos los ficheros que nosotros deseemos aceptar.
Para ello, y siguiendo la manera m�s sencilla posible, instalamos los paquetes anon-ftp y wu-ftpd y permitimos que estos habiliten la carga de los daemons necesarios en memoria (cosa que los paquetes rpm har�n autom�ticamente al instalarlos con el par�metro -i):
[root@localhost sromero]# rpm -i anonftp-2.5-1.rpm [root@localhost sromero]# rpm -i wu-ftpd-2.4.2b16-4.rpmSi no disponemos de dichos paquetes los podemos obtener del ftp de RedHat (ftp.redhat.com), del subdirectorio pub/manhattan/contrib/i386, en formato rpm, para convertirlo a otros formatos de instalaci�n (deb o tar.gz) mediante el script alien si fuera necesario. El primer paquete contiene la estructura b�sica de un servidor ftp mientras que el segundo contiene el servidor de ftp (un daemon) propiamente dicho.
El primero de los paquetes crear� en /home/ftp una estructura de directorios que ser� el directorio ra�z de nuestro ftp, siendo por defecto los siguientes:
[root@localhost home/ftp]# ls bin etc lib pubEste directorio (/home/ftp) ser� el directorio ra�z de los usuarios de nuestro ftp, es decir, que cuando el usuario realice un dir al directorio ra�z estar� viendo los mismos directorios que nosotros en /home/ftp. La forma de a�adir o quitar programas a nuestro ftp resulta, pues, muy sencilla, y se reduce a a�adir programas y directorios en el directorio /home/ftp/pub, que es de donde los usuarios remotos deben coger los ficheros. En este subdirectorio crearemos los distintos directorios (ej: juegos, fotos, tutoriales, etc.) e incluiremos los ficheros que queremos que sean accesibles desde el exterior. Tras esto y un reset (o un simple reinicio del daemon) tendremos instalado nuestro servidor de ftp.
A la hora de decirle a alguien que puede entrar en nuestro servidor, recordemos que un usuario �de a pie� no suele disponer de una direcci�n de Internet propia (como ftp.netscape.com o ftp.idsoftware.com), sino que de lo �nico de que disponemos es (a menos que hayamos contratado nuestro propio dominio y dns) de una direcci�n IP a trav�s de la cual somos accesibles desde el exterior. Si queremos que alguna persona del IRC (o, en general, cualquier usuario de Internet) entre en nuestro ftp, le deberemos comunicar nuestra IP ya que es perfectamente posible acceder a un ordenador remoto especificando la direcci�n IP en lugar del nombre. Para averiguar nuestra direcci�n IP basta con extraerla del archivo /var/log/messages, de los datos de la �ltima conexi�n (al final del fichero):
fecha localhost pppd[393]: Remote message: fecha localhost pppd[393]: local IP address 195.5.78.128Si estamos dentro del IRC otra manera de obtener nuestra direcci�n IP es mediante comandos del IRC (como /whois, /dns, etc.) con nuestro nick identificativo (/whois Jose). Dicha IP se la comunicaremos a la persona que quiere entrar en nuestro ftp para que pueda hacerlo mediante la orden ftp dir_IP:
[pepe@OtraMaquina home]# ftp 195.5.78.128Obviamente, parece muy inc�modo tener que especificar cada vez nuestra nueva direcci�n IP, pero esto es as� debido a que las direcciones IP asignadas por nuestro servidor var�an en cada conexi�n, con las excepciones de que hayamos contratado una direcci�n IP fija (en cuyo caso no variar� y todo el mundo podr� acceder a nuestro ftp usando la misma direcci�n) o de que hayamos contratado un nombre de dominio (como ftp.miftp.org), de manera que se pueda acceder al mismo desde esta notaci�n nominal (mucho m�s sencillo). Tambi�n es posible disponer de alg�n servicio de redirecci�n de nombres a IPs, y hacer un ftp a dicho nombre.
Mediante el anterior comando, cualquier persona conectada a Internet (y mientras lo estemos nosotros), podr� acceder a nuestra jerarqu�a de directorios /home/ftp, y subir o descargar ficheros, as� como utilizar todos los comandos de ftp que hemos visto en el presente art�culo, y desde cualquiera de los clientes de ftp comentados (incluyendo, por ejemplo, Netscape) convirtiendo a nuestro ordenador en un servidor de ftp como otro cualquiera.
Si queremos testear si hemos configurado correctamente el ftp, podemos hacer un ftp sobre nuestra propia m�quina de manera que se active nuestro servidor y podamos testear el servicio. Para ello especificaremos nuestra direcci�n IP de loopback (la direcci�n IP de nuestra m�quina, 127.0.0.1), o el nombre de nuestra m�quina (por ejemplo, localhost):
[root@localhost sromero]# ftp 127.0.0.1 [root@localhost sromero]# ftp localhostEn principio no debemos tener ning�n problema en el test, aunque en caso de obtener un mensaje de �Connection refused�, ser� necesario comprobar la existencia de la siguiente l�nea en el archivo de seguridad /etc/inetd.conf:
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -aEl objetivo de esto es permitir que nuestra m�quina sea accesible v�a FTP desde el exterior.
Existe un documento Howto sobre FTP anonimo que profundiza en la configuracion del mismo, haciendo especial incapie en los aspectos de seguridad.
Pese a la gran versatilidad que tiene ftp, en Linux se disponen de algunos programas que pueden facilitar y acelerar algunas de las funciones de ftp, como ncftp (un cliente de ftp m�s avanzado que el sencillo ftp) y wget, (un programa que permite descargar ficheros de cualquier recurso WWW).
Ncftp se utiliza de forma similar a ftp, pero con la salvedad de que es capaz de hacer logins autom�ticos (user anonymous y password email), que permite edici�n de l�neas anteriormente escritas (history de comandos), que dispone de un modo visual (a pantalla completa) y en l�nea (al estilo ftp), con una barra de estado que nos informar� en todo momento de qu� hace el programa, que recuerda URLs (si entramos una vez en hyper.unc.edu.es, bastar�a en otra conexi�n especificar "open hyper" o incluso "open hy" para que recuerde la URL completa), y con un comando get algo especial. El get que usa ncftp es capaz de saltarse los ficheros de los que ya disponemos, de coger m�ltiples ficheros (por ejemplo, get *), de bajar un programa a trozos sin necesidad de reget (mediante get -C nombre_fichero), bajarnos ficheros de X d�as de antig�edad o menos ( get -n X *.txt ), o incluso la posibilidad de hacer un get recursivo que entre en subdirectorios remotos y que restaure la misma jerarqu�a de directorios en nuestra m�quina, as� como los ficheros que contenga (get -R /pub/juegos). Adem�s permite entrar directamente a ftps y directorios. Por ejemplo, en el programa de ftp b�sico, para entrar en ftp.test.com/pub/linux habr�a que hacer "ftp ftp.test.com" y luego "cd pub/linux", mientras que con ncftp podemos hacer directamente desde la l�nea de comandos:
ncftp ftp.test.com/pub/linuxAdem�s ncftp recuerda el �ltimo directorio de cada site donde entremos, de modo que la siguiente vez que entremos en, por ejemplo, ftp.test.com apareceremos directamente en pub/linux. Dispone de muchas m�s funcionalidades, como un c�lculo de tiempo esperado de download del fichero (ETA), una barra de progresi�n de downloads, etc. (para m�s informaci�n, consultar la p�gina man).
Todo ello con un tama�o en disco de 174.000 bytes para la versi�n 2.4.3 (ncftp-2.4.3-3.i386.rpm), lo que lo hace ideal para bajarse cientos de im�genes de un directorio sin ir una por una, o subir multiples ficheros a una m�quina remota (como cuando subimos nuestra p�gina Web a nuestro ISP).
Wget es un programa que hace algo similar a get y reget pero desde la l�nea de comandos del Linux y que tambi�n sirve para direcciones http. La sintaxis de wget es la siguiente:
wget [opciones] direcci�n_de_InternetEntre las opciones disponibles las m�s �tiles son:
-r: wget recursivo (entra en directorios y links)
-L: s�lo entra en los links locales.
-c: para bajarse un fichero en varias sesiones o continuar desde donde se qued� si se corta la conexi�n. Esta opci�n hace que si existe en el directorio actual un fichero con el mismo nombre que el que se pretende bajar, pero con menor tama�o, wget continue bajando datos s�lo desde el final del fichero local (solo los datos que faltan para la finalizaci�n del download).
Un par de ejemplos de uso del programa podr�an ser:
wget -c ftp.juan.es/pub/programas/netscape.rpm wget -r ftp.juan.es/pub/fotos/paisajes wget -rL www.8052.comEl primer ejemplo se bajar�a el fichero netscape.rpm directamente al directorio actual, pudiendo cortarlo en cualquier momento con CTRL+C para continuar su download otro dia desde el punto en que se qued� (como reget, NetVampire, etc) utilizando el mismo comando. El segundo ejemplo se bajar�a todos los ficheros que hubieran en el directorio pub/fotos/paisajes del ftp especificado, y el tercero se bajar�a la web www.8052.com completa (incluyendo fotos, subdirectorios, etc) para poder navegar por ella en el disco duro offline.
Existen multitud de opciones (ver p�gina del manual) que lo hacen indispensable y sumamente �til. Cuenta con un frontend para GTK en modo gr�fico (Gwget) por si no nos gusta la l�nea de comandos, pero en s� wget es un programa ideal cuyo uso est� justificado, pues podemos correrlo en diferentes xterm o consolas obteniendo ficheros de Internet a la m�xima velocidad posible.
Otro programa bastante interesante y similar a Wget (pero que trabaja en forma de cach�-proxy) es WWWoffle, que permite descargar ficheros y p�ginas Web completas para navegar por ellas despu�s en modo desconectado. Tambi�n es posible marcarle p�ginas en modo desconectado para que se las baje cuando conectemos (sin ser necesaria mediaci�n alguna por nuestra parte) de forma transparente al usuario.
Cftp (Comfortable FTP) es otro programa que nos permitir� navegar por el ftp mediante las teclas de los cursores, de forma que pulsando INTRO entraremos en los directorios sobre el que situemos el cursor virtual, o nos bajaremos el fichero sobre el que estemos.
Lftp es un programa al estilo ncftp con multitud de opciones de uso e ideal para la realizaci�n de mirrors (hacer una copia exacta de un ftp o de un subdirectorio del mismo) y mirrors inversos (copiar a un ftp el contenido exacto de un subdirectorio local, ideal para subir p�ginas Web completas con subdirectorios, ya que �l mismo detecta qu� ficheros locales son m�s nuevos que los presentes en el ordenador remoto, actualizando �stos). Como caracter�sticas fundamentales tiene: soporte de alias, cach�, bookmarks, busqueda de ficheros, mirror (con opciones de continuaci�n, recursi�n, borrado, etc.) mirror inverso, y sencillos ficheros de configuraci�n.
Si lo que queremos es que nuestro programa de ftp tenga un aspecto impecable y que sea una utilidad gr�fica, disponemos en Linux de m�ltiples posibilidades (no s�lo de texto vive el hombre, aunque siempre resulte lo m�s r�pido y estable).
Entre los ftps m�s vistosos destacan gftp (del entorno gnome), IglooFTP, WX-ftp (clon de Wsftp) o el mismo Netscape Navigator.