martes, 16 de octubre de 2012

Manejos de Archivos FTP


INTRODUCCION
El nombre FTP se deriva de las iniciales de: File Transfer Protocol, iniciales que corresponden a: Protocolo de Transferencia de Archivos, que como su nombre lo indica, su función, es permitir el movimiento de archivos de un computador a otro, sin importar donde están localizados estos dos computadores, como estén interconectados, ó incluso si ellos utilizan ó no el mismo sistema operativo. Existen algunas particularidades en su uso, las cuales dependen del sistema operativo, pero la estructura de los comandos básicos es la misma de máquina a máquina.


Objetivos del Protocolo de Transferencia de Archivos FTP


El Protocolo de Transferencia de Archivos, se originó en el predecesor de la Internet, la Arpanet. FTP fué parte de del desarrollo del Protocolo TCP/IP, y fué desarrollado con los siguientes objetivos en mente:
6.1.1 Promover el compartir archivos, bien sea, que se trate de programas ó archivos de datos.
6.1.2 Impulsar indirectamente ó implicítamente (a través de programas) el uso de computadores remotos.
6.1.3 Aislar al usuario de las variaciones en los sistemas de almacenamiento de archivos ó servidores
6.1.4 Transferir datos confiable y eficientemente.


Comandos del Protocolo de Transferencia de Archivos FTP


Los comandos para el manejo de transferencias de Archivos FTP, se pueden dividir en: Comandos de Control de Acceso y Comandos de Servicio, bien sea que se trate de instrucciones que van a permitir el manejo de la conexión ó que van a ejecutar instrucciones relacionadas con la transferencia en sí misma de archivos. A continuación se indica una descripción de los principales comandos disponibles:


6.2.1 Comandos de Control de Acceso
Los siguientes comandos son comandos utilizados para el manejo del Control de Acceso dentro de una sesión FTP:(Los códigos del comando se muestran entre paréntesis).


Nombre de Usuario -USER NAME-(USER)
La identificación del usuario, es aquella requerida por el servidor para el acceso a su sistema de archivos. Este comando es normalmente el primer comando transmitido por el usuario después de que se han establecido las conexiones de control.
Adicionalmente, se puede requerir información adicional en la forma de una palabra clave (password), y/ó un comando de cuenta pueden ser también requeridos por algunos servidores.
Algunos Servidores permiten que un nuevo comando de Usuario (USER) sea emitido en cualquier momento con el fin de cambiar el control de acceso y/ó la información de la cuenta. Esto tiene el efecto de eliminar cualquier secuencia de usuario, password, e información de cuenta suministrada y empezar una nueva sesión a partir del login. Todos los parámetros de transferencia se mantienen sin cambio, y cualquier transferencia de archivo se completa bajo los parámetros de control de acceso del usuario anterior.
El nombre de usuario que se envíe, va a determinar que archivos remotos pueda accesar el usuario, y adicionalmente de este nombre dependerán privilegios como la posibilidad de no solo, obtener archivos desde el servidor remoto sino, cargar ó borrar en el servidor remoto.


Palabra Clave -PASSWORD- (PASS)
Este comando debe ser precedido por el nombre de usuario, y en el caso de algunos sitios, completa la identificación del usuario para el control de acceso. Al momento de ser tecleada esta información, normalmente no se recibe un "eco" de la misma, se muestra simplemente una representación de cada caracter en la forma de asteriscos.


Cuenta -ACCOUNT- (ACCT)
El comando de Cuenta no está necesariamente relacionado al comando de USER, dado que, algunos sitios requieren una cuenta para efectos de login y otros, solo para efectos de accesos especificos tales como almacenamiento de archivos.


Cambio de Directorio de Trabajo -CHANGE WORKING DIRECTORY- (CWD)
Este comando le permite al usuario trabajar con un directorio diferente para efectos de almacenamiento o de recobrar información, sin alterar su información de login. Así mismo, los parámetros de transferencia no son modificados. El argumento de este comando es el path especificando el nuevo directorio.
Cambio a Directorio Superior -CHANGE TO PARENT DIRECTORY- (CDUP)
Este comando, es un caso especial del anterior comando CWD, y es incluido para simplificar la implementación de programas que permitan transferir árboles de directorio entre sistemas operativas con diferentes sintaxis para el directorio raiz.
Reinicializar -REINITIALIZE- (REIN)
Este comando termina un Usuario -USER-, eliminando toda la información de sus cuenta, excepto que permite la finalización de cualquier transferencia que se esté ejecutando. Todos los parámetros son reinicializados a los ajustes por defectoy el control de la conexión es dejado abierto. Esto es idéntico al estado en que un usuario se encuentra al momento inicial de abrir la conexión. Se podría esperar que a continuación siguiera un comando de usuario -USER-.
Salir -LOGOUT. (QUIT)
Este comando termina un Usuario -USER- y si no se encuentra en progreso una transferencia de archivos, el servidor cierra la conexión de control. Si todavía existe una transferencia en progreso ,la conexión continuará abierta esperando por la finalización de la transferencia y luego el servidor la cerrará. Si el proceso del usuario está transferiendo archivos para varios usuarios, pero no desea cerrar y luego reabrir una conexión para cada uno, entonces, debe utilizar el comando REIN en vez del comando QUIT.
6.2.2 Comandos de Servicio de FTP
Los comando de Servicio de FTP definen la transferencia de archivos ó la función del sistema de archivos requerida por el usuario.El argumento de un comando de servicio FTP será normalmente un nombre de subdirectorio (Pathname).
La sintaxis de los nombres de archivo deben ajustarse a las convenciones del sitio (con los estándar por defecto aplicables), y al lenguaje y las convenciones de lenguaje para el control de la conexión. El manejo sugerido por defecto, es usar el último elemento, directorio ó nombre de archivo especificados, ó el estándar por defecto sugerido para usuarios locales . Los comandos pueden ser emitidos en cualquier orden, excepto un comando "rename from" debe ser seguido inmediatamente por un comando "rename to" y un comando restart debe ser seguido por un comando de servicio interrumpido (por ejemplo, STOR or RETR). Los datos cuando son transferidos en respuesta a comandos de servicio FTP, deben ser siempre enviados sobre la conexión de datos, excepto para ciertas respuestas de tipo informativo. Los siguientes comandos especifican requerimientos de servicio FTP:
Recobrar - RETRIEVE- (RETR)
Este comando hace que el servidor transfiera una copia del archivo, especificado en el pathname, al servidor ó al usuario conectado al otro extremo de la conexión.El estado y contenido del archivo en el sitio del servidor no se verá afectado.
Almacenar -STORE- (STOR)
Este comando hace que el Servidor DTP acepte datos transferidos a través de la conexión de datos y los almacene como un archivo en el sitio del servidor. Si el archivo especificado existe en el sitio del servidor, el contenido será reemplazado por los datos transferidos. Si el archivo no existe, entonces se creará uno nuevo.
Almacenar Unico -STORE UNIQUE- (STOU)
Este comoando se comporta como STOR excepto que el archivo resultante es creado en el directorio corriente bajo un nombre único en ese directorio. La respuesta: "250 Transfer Started" incluirá además el nombre generado.
Adicionar -APPEND- (with create) (APPE)
Este comando hace que el Servidor DTP acepte datos transferidos a través de la conexión de datos y que los almacene en un archivo en el sitio del Servidor. Si el archivo especificado en el nombre, existe, en el sitio del servidor, entonces los datos serán adicionados al final de ese archivo, de otro modo el archivo debe ser creado en el sitio del servidor.
Disponer -ALLOCATE- (ALLO)
Este comando puede ser requerido por algunos servidores para reservar suficiente almacenamiento que permite acomodar al nuevo archivo a ser transferido. El argumento debe ser un entero decimal representando el número de bytes (usando el tamaño de byte lógico) de almacenamiento a ser reservados para el archivo. Para archivos enviados con registros ó estructura de página, un registro máximo ó tamaño de página (en bytes lógicos) puede ser también necesario, esto es indicado por un entero decimal en un segundo campo de argumento.
Este segundo argumento es opcional, pero cuando esté presente, debe estar separdado del primero por tres caracteres <SP> R <SP>. Este comando debe ser seguido por un comando STORe or APPEnd. El comando ALLO debe ser tratado como un comando NOOP (no operación) por aquellos servidores que no requieren que el tamaño máximo del archivo sea declarado de antemano, y por aquellos servidores interesados en solamente, el máximo registro tamaño de página,deben aceptar cualquier valor para el primer argumento e ignorarlo.
Reiniciar -RESTART- (REST)
El campo de argumento representa el marcador del servidor para el cual la transferencia de archivos va a ser reiniciada.Este comando no causa una transferencia de archivo, pero salta sobre el archivo al punto de chequeo especificado. Este comando debe ser seguido inmediatamente por el el comando de Servicio de FTP apropiado, que debe hacer que se continue con la transferencia de archivos.
Renombrar a partir de -RENAME FROM- (RNFR)
Este comando especifica el nombre y el path del archivo que va a ser renombrado. Debe ser seguido inmediatamente por un comando "rename to" que especifica el nuevo nombre de archivo.
Renombrar a -RENAME TO- (RNTO)
Este comando especifica un nuevo nombre de archivo para el archivo especificado en el comando inmediatamente anterior "rename from" . Juntos los dos comandos permiten que un archivo sea renombrado. .
Abortar -ABORT- (ABOR)
Este comando hace que el servidor aborte el comando de servicio FTP anterior y cualquier transferencia asociada de datos. El comando "abort" puede requerir acciones especiales para que sea reconocido por el Servidor. No se hace necesaria ninguna acción si el comando previo ya ha sido completado (incluyendo la transferencia de datos). La conexión de control no va a ser cerrada por este comando, pero la conexión de datos debe ser cerrada. Existen dos casos para el servidor al momento de recibir este comando:
  1. El comando de Servicio de FTP ya ha sido completado, ó
  2. El comando de servicio FTP está todavía en progreso.
En el primer caso, el servidor cierra la conexión de datos (si todavía está abierta) y responde con un mensaje de respuesta 226, indicando que el comando de abortar fué exitosamente ejecutado. En el segundo caso, el servidor aborta el Servicio FTP en ejecución, y cierra la conexión de datos, retornando un mensaje de respuesta 426 para indicar que el requerimiento de servicio fué anormalmente terminado. Luego el servidor envía un mensaje de respuesta 226, indicando que el comando abortar fué exitosamente procesado.
Eliminar -DELETE- (DELE)
Este comando hace que el archivo especificado en el path sea borrado en el sitio del servidor. Si se desea un nivel extra de protección (tal como la pregunta: "Quiere realmente eliminar el archivo?"), este debe ser suministra por el usuario del proceso de FTP.
Remover Directorio -REMOVE DIRECTORY- (RMD)
Este comando hace que el directorio especificado en el path sea removido como directorio (Si el path es absoluto), ó como subdirectorio del directorio de trabajo corriente (Si el path es relativo).
Crear Directorio -MAKE DIRECTORY- (MKD)
Este comando hace que el directorio especificado en el path sea creado como directorio (Si el path es absoluto), ó como subdirectorio del directorio de trabajo corriente (Si el path es relativo).
Imprimir Directorio de Trabajo -PRINT WORKING DIRECTORY- (PWD)
Este comando hace que el directorio de trabajo corriente, con el listado de todos los archivos que contiene, sea retornado como respuesta.
Listar -LIST- (LIST)
Este comando hace que una lista sea enviada desde, el servidor a la DTP pasiva.
Si el nombre del path especifica un directorio ó otro grupo de archivos, el servidor debe transferir un listado de archivos contenidos en el directorio especificado. Si el nombre del path especifica un archivo, entonces el servidor debe enviar la información sobre el archivo corriente. Un argumento nulo implica el directorio por defecto ó el directorio corriente del usuario.
La transferencia de datos sobre la conexión se realiza en formato ASCII ó EBCDIC. El usuario debe asegurarse que el Tipo de Formato sea el apropiado. Dado que la información en un archivo puede variar ampliamente de sistema a sistema, este tipo de información puede ser dificil de usar en forma automática, dentro de un programa, pero puede ser de utilidad para un usuario.


Listar Nombre -NAME LIST- (NLST)
Este comando hace que un listado del directorio sea enviado desde el servidor al sitio del usuario. El nombre del path debe especificar un directorio u otro grupo de archivos específico del sistema, un argumento nulo implica el directorio corriente. El servidor retornará un listado de nombre de archivos sin ninguna otra información. Los datos serán transferidos en formato ASCII ó EBCDIC sobre la conexión de datos como cadenas de nombres de path válidas separadas por <CRLF> ó <NL>. (Aquí de nuevo, el usuario debe asegurarse que el tipo de formato es correcto). Este comando es utilizado para retornar información que puede ser utilizada por un programa para procesar archivos automáticamente. Por ejemplo, en la implementación de una función "multiple get".


Parámetros de Sitio -SITE PARAMETERS- (SITE)
Este comando es utilizado por el servidor para proveer servicios específicos del sistema que son esenciales para la transferencia de archivos, pero no suficientemente universales para ser incluidos como comandos en el protocolo. La naturaleza de este servicio al igual que la especificación de su sintaxis puede ser establecida a través de una respuesta al comando HELP SITE.


Sistema -SYSTEM- (SYST)
Este comando es usado para conocer el tipo de sistema operativo que utiliza el servidor.


Estado -STATUS- (STAT)
Este comando debe causar una respuesta de Status que debe ser enviada sobre la conexión de control en la forma de una respuesta. Este comando puede ser enviado durante una transferencia de archivos, en cuyo caso el servidor responderá con el estado de la operación en progreso, ó puede ser enviado entre transferencias de archivos. En el último caso puede tener un campo de argumento. Si el argumento en un nombre de path, el comando es análogo al comando "list" excepto que los datos deben ser transferidos sobre la conexión de control. Si se da un nombre de path parcial, el servidor puede responder con una list de nombres de archivo ó atributos asociados con esa especificación. Si no se entrega ningún argumento, el servidor debe retornar información del estado general del proceso de FTP del servidor. Esto debe incluir valores corrientes de todos los parámetros de transferencia y el estado de las conexiones.


Ayuda -HELP- (HELP)
Este comando hará que el servidor envíe al usuario, información de ayuda relativa al estado de la implementación de la conexión de control. El comando puede aceptar un argumento (por ejemplo: cualquier nombre de comando) y retornar información más específica como respuesta. La respuesta es del tipo 211 ó 214. Se sugiere que HELP sea enviado antes de entrar comandos de usuario. El servidor puedes usar la respuesta a este comando para enviar especificaciones de parámetros dependientes del sitio.


No Operación -NOOP- (NOOP)
Este parámetro no afecta ninguno de los parámetros ó comandos previamente entrados. Este especifica no otra acción que el servidor envíe una respuesta de OK

No hay comentarios:

Publicar un comentario