Sistema de ficheros en Linux
Introducción:
Para saber administrar un sistema es fundamental comprender la organización de ese sistema. La organización de un sistema informático se llama sistema de ficheros.
Vamos a estudiar como se organiza internamente un sistema de archivos en Linux y los comandos que se utilizan para manipularlo.
El sistema de ficheros es la parte del núcleo más visible por los usuarios; se encarga de abstraer propiedades físicas de diferentes dispositivos para proporcionar una interfaz única de almacenamiento: el archivo. Cada sistema Unix tiene su sistema de archivos nativo (por ejemplo, ext2 en Linux, UFS en Solaris o EFS en IRIX), por lo que para acceder a todos ellos de la misma forma el núcleo de Unix incorpora una capa superior denominada VFS ( Virtual File System) encargada de proporcionar un acceso uniforme a diferentes tipos de sistema de ficheros.
Un inodo o nodo índice es una estructura de datos que relaciona un grupo de bloques de un dispositivo con un determinado nombre del sistema de ficheros. Internamente, el núcleo de Unix no distingue a sus archivos por su nombre sino por un número de inodo.
Tipos de ficheros:
Un fichero o archivo es el elemento básico del Sistema de Ficheros. La mayoría de los sistemas operativos tienen distintos tipos de ficheros. Para Linux se pueden clasificar los ficheros en 3 tipos: ficheros normales, directorios y ficheros especiales (dispositivo de bloques, dispositivo de caracteres y enlaces).
Se pueden definir los ficheros normales como secuencias de bytes destinadas a almacenar información (texto, datos, programas) ya sea generada por los usuarios del sistema o por el propio sistema para su funcionamiento.
Las reglas generales para el nombrado de ficheros en Linux son las mismas que para sistema Unix
- Un nombre de fichero puede tener de 1 a 255 caracteres.
- No se permiten los caracteres como: metacaracteres ? * [ ] ‘ “ ` $ # | \ ; & { } carácter / (delimitador de directorios) carácter espacio, caracteres de control.
- Unix distingue entre mayúsculas y minúsculas. Se recomienda utilizar siempre minúsculas pues , por convenio, las variables y macros del sistema se escriben en mayúsculas.
- No existe extensión. Pueden haber varios puntos. Se recomienda utilizar nombres con un punto y a continuación algo que indique el tipo de fichero de que se trata.
- /dev/console Consola principal del sistema
- /dev/fd* Para la disquetera
- /dev/hd* Para el disco duro
- /dev/ttyS*, /dev/cua* Puertos serie del sistema
- /dev/sd* Discos duros con interfaz SCSI. (Para las particiones se sigue la misma notación que en los dispositivos IDE)
- /dev/lp* Puertos paralelo (de impresión, etc.)
- /dev/null Dispositivo nulo, cualquier dato enviado a este dispositivo se pierde.
- /dev/tty Consolas virtuales (el sistema simula la conexión a varios terminales)

- bin La mayor parte de los programas de usuario
- include Ficheros de cabecera para programas compilados en C
- lib Como su homónimo del raíz: bibliotecas, tanto dinámicas como estáticas
- local Jerarquía local. Es como una copia de /usr pero destinado a programas creados o compilados de forma local (es el directorio usado cuando instalamos un programa a partir de los fuentes: los programas así instalados están al margen del sistema de gestión de paquetes de la distribución, y por eso se ponen en un directorio aparte. También es usado para instalar los scripts o programas “caseros” que hayamos hecho nosotros: /usr/local/bin o /usr/local/sbin es el lugar adecuado para éstos)
- sbin Programas (no vitales) para el administrador
- share Ficheros de datos independientes de la arquitectura: imagenes, documentación (/usr/share/doc), etc.
- X11R6 Directorio para el sistema X Window
- games Para juegos
- src Para fuentes de programas
- cache Datos cacheados por las aplicaciones que realizan operaciones de cálculo o de E/S (incluyendo esto descargas de la red) costosas para almacenar aquí los datos, y no tener que volver a reprocesarlos. Por ejemplo, la herramienta apt-get (/var/cache/apt).
- libnInformación variable de los programas. (Su nombre es un poco confuso, porque en realidad no hay ninguna biblioteca aquí)
- localnDatos variables para los programas de /usr/local
- lock Ficheros de bloqueo
- log Registros del sistema, los llamados ficheros de log o de bitácora. Por ejemplo, los que crea el servicio syslog
- opt Datos variables para los programas de /opt
- run Datos para los programas en ejecución
- spool Datos de spool1, esto es, ficheros que son creados por programas para su posterior proceso: ficheros en cola de impresión, mensajes de correo, etc.
- tmp Ficheros temporales preservados aunque el sistema sea reiniciado