Capítulo 6: Operación de sistemas de archivos
Conceptos relacionados con los archivos
Como hemos dicho antes el funcionamiento del sistema de archivos gira en torno al concepto de archivo. Por ese motivo, a continuación vamos a centrarnos en algunas de sus características más importantes.
Nombre y extensión
Permiten identificar de forma única a un determinado archivo.
El nombre estará formado por una secuencia de caracteres, cuya longitud puede variar según el sistema de archivos con el que estemos trabajando, aunque actualmente suelen ser de 255, como máximo.
Además, los sistemas de archivos suelen imponer restricciones en cuando al conjunto de caracteres que podemos usar. Por ejemplo, en Windows podemos utilizar cualquier carácter contenido en el juego de caracteres ASCII Extendido o Unicode, excepto aquellos cuyo valor numérico se encuentra por debajo de 31 y los siguientes, que son tratados como caracteres reservados:
-
< (menor que)
-
< (menor que)
-
> (mayor que)
-
: (dos puntos)
-
» (comilla doble)
-
/ (barra diagonal)
-
\ (barra diagonal inversa)
-
| (barra vertical o barra vertical)
-
? (signo de interrogación)
-
* (asterisco)
En el caso de ext4, que es el sistema de archivos más frecuente en GNU/Linux, en teoría, podemos utilizar cualquier carácter salvo NUL (valor cero) y / (barra diagonal), pero te recomiendo que seas prudente con el uso de otros caracteres especiales, para evitar ambigüedades.
Otra diferencia importante en el modo de manejar los nombres de archivos en los diferentes sistemas de archivos se refiere al uso de las mayúsculas: Mientras que Windows no hace diferencias entre caracteres en mayúscula y en minúscula, los sistemas de archivos de la familia GNU/Linux si suelen diferenciarlos.
Esto significa que, en Windows, los nombres de archivo apuntes.txt, Apuntes.txt y APUNTES.txt hacen referencia al mismo archivo, mientras que en GNU/Linux se tratará de archivos distintos.
Por otro lado, es frecuente que la parte final del nombre termine en un punto, seguido de tres o cuatro caracteres que indican el tipo de contenido del archivo (de hecho, lo hemos hecho así en el ejemplo anterior). De esta forma, el usuario sabe la clase de información que puede encontrar en su interior. Este grupo de caracteres recibe el nombre de extensión.
En la siguiente tabla incluimos algunos ejemplos:
Algunos sistemas de archivos, como las diferentes versiones de FAT o incluso NTFS, utilizan las extensiones de los archivos para establecer el tipo de programa que puede interpretar la información que contienen. En otros, como GNU/Linux, se utilizan los metadatos de los archivos para identificar el tipo de información que almacenan.
Caracteres comodín (Wildcard)
Un carácter comodín es aquél que tiene la capacidad de representar a cualquier otro carácter o conjunto de caracteres. En el sistema operativo suelen utilizarse para sustituir parte del nombre de un archivo o de alguno de los directorios que forman su ruta. Esto nos permite hacer referencia a un archivo del que no recordamos su nombre completo o bien a un grupo de archivos que tengan en común una parte de su nombre.
Los dos caracteres comodín mas utilizados son:
-
El asterisco (*): Representa a cualquier combinación de caracteres. Incluso cubre la posibilidad de que no haya ningún carácter.
Para entenderlo, supongamos que en un directorio tengo los siguientes archivos: Mi_imagen.png, imagen.png, imagen1.png, imagen21.png Podría hacer referencia a todos ellos escribiendo lo siguiente: *imagen*.png
-
El signo de interrogación (?): Representa a un único carácter. Así, en el ejemplo anterior, podríamos hacer referencia sólo al último archivo escribiendo lo siguiente: imagen??.png
Atributos y permisos
El sistema operativo debe tener la capacidad de controlar qué usuario puede acceder a cada uno de sus recursos (directorios, impresoras, conexiones de red, etc.). Para lograrlo, cada uno de estos recursos suele tener asociada una Lista de Control de Acceso o ACL (del inglés, Access Control List), en la que se relacionan los diferentes usuarios que pueden acceder y bajo qué condiciones (lectura, escritura, ejecución, …)
A modo de ejemplo, podríamos escribir un script para GNU/Linux en un archivo de texto y, a pesar de tener una sintaxis completamente correcta, no podremos ejecutarlo hasta que no le hayamos otorgado permiso de ejecución.
Además, un determinado archivo puede tener asociados diferentes atributos, que informan sobre ciertas características del archivo o del modo en el que el sistema operativo debe tratarlo. Así, un archivo puede tener atributos como: directorio, oculto, de solo lectura, de sistema, cifrado, etc.