Programación Web » Administrar un sitio Web » Unidad 6. UNIX/Linux:

El sistema de ficheros de UNIX

Árbol, sistema de ficheros UNIX

Uno de los pilares básicos del sistema UNIX es el sistema de archivos.

Esto es así porque gran parte de la interacción del sistemas operativo con el mundo exterior se realiza precisamente a través de él. La importancia de éste es fundamental puesto que permite llevar a cabo la gestión y organización de la máquina.

Con toda probabilidad ya estará familiarizado con su uso puesto que seguro que ha utilizado antes otro sistema operativo como Windows.

En realidad muchas de las características del sistema de archivos UNIX se encuentran presente en la mayoría de los sistemas operativos actuales.

Buena prueba de ello por ejemplo es Windows que está basado en MS DOS que, a su vez, proviene del legendario CP/M.

El archivo, la unidad básica

La base del sistema de archivos está constituida por su unidad elemental, el archivo, que no es otra cosa que la estructura empleada por el sistema operativo para almacenar la información.

Un archivo consiste en una secuencia de bytes que se almacena siguiendo ciertas reglas en alguna parte de un dispositivo físico como un CDROM, una unidad de disco o memoria.

La información contenida en el archivo puede ser lógicamente, de cualquier tipo, desde un documento de texto, a los datos de un programa de cálculo simbólico o los dibujos realizados mediante un programa de diseño gráfico.

El sistema de archivos, por tanto, es la estructura que permite al sistema operativo manejar el conjunto de archivos residentes en el sistema.

Entre otras propiedades un archivo tiene asociado un nombre, formado por una cadena de caracteres alfanuméricos que permite identificarlo y diferenciarlo de otros.

El nombre es una propiedad muy importante que permite identificar de manera unívoca a un archivo.

Todas las órdenes de manipulación de archivos necesitan uno o varios nombres de archivos para realizar la operación. Así, por ejemplo, si quiere duplicar un archivo puede utilizar la orden de copia a la que deberá proporcionar los nombre del archivo fuente y del archivo destino:

$ cp archivo1 archivo2

En este ejemplo, la orden cp recibe como argumentos dos nombres de archivo, archivo1 y archivo2 y, realiza la copia del primero sobre el segundo.

De esta manera y dado que el nombre es una propiedad única y propia de cada archivo es empleado como identificador suyo. Así cuando queremos referirnos a un archivo lo haremos simplemente citando su nombre.

Por ejemplo, podemos decir "el archivo CUENTAS contiene los datos estadísticos de todas las cuentas del sistema" para referirnos a un archivo en particular que se encuentra físicamente en una unidad de disco duro y que contiene ese tipo de información.

El número de caracteres por los que puede estar constituido un nombre de archivo es elevado si bien depende de la configuración y características del sistema UNIX en particular.

PRECAUCIÓN: En UNIX los nombres de archivo pueden tener un máximo de 256 caracteres. En realidad conviene ser precavido en este aspecto sobre todo cuando opere con versiones de UNIX antiguas puesto que algunas consideran que dos archivos son el mismo si coinciden los primeros 14 primeros caracteres.

En general, es conveniente que el nombre del archivo haga referencia a sus contenidos y que además sea suficientemente explicativo. De esta manera, la simple inspección del nombre revela suficiente información como para hacerse una idea de lo que en él se encuentra almacenado.

AHORRE TIEMPO: En último término tampoco suele ser conveniente emplear nombres de archivos demasiado largos ya que más tarde puede convertirse en un engorro referirse a tales archivos.

UNIX permite emplear todo tipo de caracteres para confeccionar los nombres de los archivos. La única excepción es el carácter barra inclinada (/) que tiene un significado especial como veremos a continuación.

PRECAUCIÓN: Debe tener en cuenta que UNIX distingue las mayúsculas de las minúsculas, al contrario que otros sistemas operativos como Windows.

Como regla práctica se aconseja no utilizar tampoco los siguientes caracteres para confeccionar un nombre de un archivo:

¡, #, &, (,), ', ;, |, <, >, TAB, @, $, ^, {, }, *, ?, \, ESPACIO, RETROCESO.

La razón  estriba en que el shell reconoce alguno de estos caracteres dándole un significado propio y llevando a cabo ciertas acciones.

Si está habituado a emplear Windows recordará que los nombres de archivos van siempre seguidos de una extensión  que generalmente da cuenta del tipo de archivo del que se trata.

Por ejemplo, un archivo ejecutable tiene simpre extensión EXE o COM, mientras que un documento Word tiene extensión DOC.

En UNIX la extensión no es una característica del archivo como en el caso de Windows, que hace hace un tratamiento especial de ellos dependiendo de su tipo.

Es decir, el sistema operativo no reconoce una extensión de por sí, pero a pesar de eso los nombres de archivos suelen seguir ciertos criterios simulando una extensión. Esto permite al usuario reconocer los archivos simplemente viendo su nombre.

La siguiente tabla resume algunas de las extensiones empleadas más frecuentemente.

Extensión

Descripción

.c

Código fuente de un programa C

.cc

Código fuente de un programa C++

.csh

Código de un shell script

.gif

Imagen codificada en formato GIF

.gz

Archivo comprimido con gzip

.jpg

Imagen codificada en formato JPEG

.o

Archivo objeto

.ps

Archivo Postscript

.sh

Programa shell

.tar

Archivo empaquetado con tar

.tex

Texto formateado con Tex o LaTex

.txt

Texto ASCII

.Z

Archivo comprimido con compress

Extensiones empleadas más comunes junto con la descripción de su contenido.

En UNIX es común encontrar también nombres con más de una extensión, como por ejemplo:

trabajo.tar.gz

en este caso esto indica que el archivo trabajo ha sido procesado primero con la orden tar para, probablemente, empaquetar un conjunto de archivos y posteriormente con la orden gzip para comprimir el archivo resultante.

La mayoría de los programas para UNIX y Linux en particular se distribuyen comprimidos de esta manera, por lo que es necesario realizar la operación inversa para recuperar el programa. Este será un proceso que realizará con cierta frecuencia como nuevo usuario de UNIX.

Los directorios

El archivo como unidad básica para almacenar información resulta muy útil.

Sin embargo, es necesario contar con algún otro elemento que permita organizar los archivos de una forma más o menos compleja, que permita por ejemplo clasificarlos por su utilidad o utilizando cualquier otro criterio.

De otra manera llegaríamos a tener grandes cantidades de archivos almacenados en cada medio haciendo difícil su localización y clasificación.

Para resolver esta cuestión UNIX incorpora los directorios carpetas, unos archivos especiales que permiten agrupar a los archivos clasificándolos de la forma deseada.

Conceptualmente un directorio actúa como un contenedor de un grupo de archivos.

Análogamente, y dado que un directorio en sí mismo un archivo, puede contener a su vez otro directorio, denominado subdirectorio, proporcionando una forma muy efectiva de organizar la información.

Por ejemplo, suponga que dispone de una serie de archivos de tipo documento de texto que contiene datos sobre distintos proyectos de ingeniería.

Si quisiera organizar toda esta información empleando una estructura con directorios y subdirectorios podría intentar algo así:

imagen de directorios y subdirectorios

Esta estructura consta de un directorio padre denominado Proyectos del que cuelgan dos subdirectorios, denominado Proyecto Estructura de Datos y Proyecto Web.

Realmente las posibilidades son infinitas y no tiene por qué introducir todos los archivos en una carpeta o subdirectorio, sino que puede mezclar ambos en un mismo directorio.

Tipos de archivos en UNIX

Hasta ahora hemos presentado el archivo de UNIX como unidad básica de almacenamiento y hemos introducido dos tipos de archivos: los archivos ordinarios y los directorios. En esta sección hablaremos además de los archivos especiales.

Archivos ordinarios

O simplemente archivos, lo forman los archivos empleados para almacenar datos, textos, programas, etc; en definitiva, la información que como usuario le resulta más relevante.

Directorios

Un directorio (y por extensión un subdirectorio) es un archivo que agrupa a un conjunto de archivos, entre los que puede encontrarse archivos ordinarios, otros directorios (subdirectorios), archivos especiales y como veremos a continuación también enlaces y enlaces simbólicos.

Archivos especiales

Los archivos son la piedra angular de UNIX. El acceso a los dispositivos se realiza también mediante archivos, denominados especiales, que representan cada uno de los dispositivos físicos.

Por ejemplo, un puerto de impresora tiene asociado un archivo. Introducir información en ese archivo equivale a enviar información a la impresora.

Análogamente existen archivos especiales para el puerto de comunicaciones, el teclado, un terminal o una unidad de disco.

Para el usuario un archivo especial tiene el mismo “aspecto” que un archivo ordinario. Así por ejemplo, puede utilizar la orden de copia para enviar unos datos a la impresora, proporcionando como archivo destino el archivo asignado a la impresora.

La principal ventaja de UNIX a la hora de tratar todo como un archivo radica en que permite llevar a cabo una verdadera independencia del dispositivo.

Es decir, el acceso a un puerto serie, por ejemplo, se lleva a cabo de la misma manera en cualquier sistema UNIX. Además si sabe manejar los archivos sabrá manejas todos los dispositivos del sistema.

Enlaces duros y enlaces simbólicos

La funcionalidad de los archivos ordinarios se ve mejorada con la introducción de los enlaces duros y los enlaces simbólicos.

Enlaces duros

Plantéese el siguiente problema:

¿Qué ocurre si dos usuarios desean compartir el mismo archivo?

Una solución puede pasar por tener dos copiar del mismo archivo, una para cada usuario.

Este enfoque requiere suficiente espacio como para poder almacenar dos copias idénticas del archivo. Además cada usuario puede modificar su archivo de forma que el otro usuario no ve los cambios realizados.

Otra solución más razonable pasa por el uso de los llamados enlaces duros, o simplemente enlaces, como se les denomina comúnmente.

Un enlace no es más que un segundo nombre para un archivo. El efecto es como si los dos usuarios tuviesen copias del mismo archivo pero en realidad comparten la misma copia del archivo con dos nombres.

Con esta solución no sólo se ahorra en espacio, también se consigue que las modificaciones realizadas por uno sean vistas por el otro.

Enlaces simbólicos

Los enlaces simbólicos se introdujeron para mejorar ciertas limitaciones de los enlaces duros. En particular, los enlaces “duros” no permiten asignar más de un nombre a un directorio.

Tampoco se puede hacer un enlace de un archivo perteneciente a un sistema de archivos localizado en otra máquina de red. Estos problemas se solucionan con los enlaces simbólicos introducidos en el UNIX Sistema V Versión 4.

Un enlace simbólico no es más que un archivo que contiene el nombre de otro archivo, de forma que cuando se hace referencia al enlace simbólico ésta se dirige al archivo apuntado por el enlace.

También puede crearse un enlace simbólico que apunte a un directorio produciendo el mismo efecto.

Por ejemplo, suponga que tiene un archivo llamado balance.txt y un enlace simbólico a este archivo llamado datos.txt. Así datos.txt según lo que acabamos de exponer, es en realidad otro archivo que contiene el nombre del archivo balance.txt.

De esta forma, cualquier acceso a datos.txt es traducido por el sistema como un acceso a balance.txt. Este mecanismo contrasta con el de los enlaces duros.

En esta ocasión tenemos dos archivos con dos nombres mientras que en el caso de los enlaces duros tenemos dos nombres para el mismo archivo.

Existe otra diferencia importante entre los enlaces duros y los simbólicos. Los enlaces duros a un archivo son indistinguibles entre sí. Eliminar cualquiera de ellos o el primero que dio origen al archivo no afecta al resto.

Los enlaces simbólicos por el contrario, dependen del archivo con el que están enlazados. En el ejemplo anterior podría eliminar el archivo balance.txt. Así, datos.txt seguirá siendo un enlace simbólico a balance.txt. Sin embargo, este archivo no existe por lo que un acceso a datos.txt provoca un error. Esto no habría ocurrido con enlaces duros.

La introducción a los sistemas de archivos distribuidos NFS y RFS en el UNIX Sistema V Versión 4 hace particularmente útil el uso de los enlaces simbólicos pues permite el acceso a sistemas de archivos remotos situados en otras máquinas de la red en la propia máquina como si se encontrara realmente en ella.

El sistema de ficheros de UNIX. Esto es así porque gran parte de la interacción del sistemas operativo con el mundo exterior se realiza precisamente a través de él. La importancia de éste es fundamental puesto que permite llevar a cabo la gestión y organización de la máquina. Publicado por en enero 14, 2014

Tags: Sistema, ficheros, UNIX

Artículos de navegación

Acerca del Profesor

Adrián Delgado Rodríguez

Ingeniero en Computación, docente por convicción y apasionado por la programación Web.

Actualmente trabaja como Profesor para en el Centro Universitario de la Costa de la Universidad de Guadalajara y como Desarrollador Web.

Síguenos:

 

Ver el perfil completo de Hugo Adrián Delgado Rodríguez (akus.net).

Deja un comentario





Diseño de páginas Web en Puerto Vallarta y Bahía de Banderas akus.net
subir

Síguenos en Facebook

Artículo de la semana

Cómo iniciar una página WebMetodología para la creación de sitios

Comprende las fases de Análisis, Planificación, Contenido, Diseño. ¿Qué método utilizas?