Sistema de archivos en Linux / Unix
Un sistema de archivos es la forma en que un S.O. organiza los ficheros en el disco duro, gestionado de manera que los datos están de forma estructurada y libres de errores. La organización es jerárquica en forma de árbol invertido como en DOS.
El raíz es “/” y de él cuelgan el resto de directorios del sistema. No existe raíz por cada sistema de ficheros. Todo, incluso otros sistemas de ficheros cuelgan de la estructura del sistema.
Linux admite nombres de fichero largos y distingue entre mayúsculas y minúsculas.
Tipos de ficheros:
Varían en función de lo que nos permiten realizar. Pueden ser:
– Archivos ordinarios y ficheros regulares: almacenan la información de los usuarios y son de tipo ASCII.
– Enlaces simbólicos o débiles y enlaces duros o fuertes.
A) Simbólicos o débiles: parecidos al acceso directo de Windows. Crean un puntero de archivo por su nombre. En caso de borrar el original, ya no apuntan a ningún sitio. Pueden apuntar a archivos en otras particiones o unidades de red distintas.
B) Fuertes o duros o físicos: Apuntan al i-nodo del fichero. Cada archivo tiene su propio i-nodo. Un i-nodo es una estructura de datos similar a una tabla en la que se almacenan atributos y características del archivo y su posición en el disco. El enlace duro tiene el mismo i-nodo que el archivo original. No puede crearse un enlace duro entre dos archivos de particiones separadas ya que se refiere al archivo original por el i-nodo y el i-nodo de un archivo es diferente entre sistemas de archivos.
Un enlace duro es un nombre de un fichero por lo que el fichero se borrará del disco cuando se borre el último nombre que haga referencia a él.
Estructura jerárquica de archivos y directorios:
– Directorios: archivos que contiene referencias a otros archivos.
– Archivos especiales: suelen representar dispositivos físicos como unidades de almacenamiento, impresoras, etc. Linux trata los archivos especiales como archivos ordinarios.
No tiene límite conocido del número de archivos y directorios que se pueden crear dentro de un directorio. No existe el concepto de unidad activa como tal ya que el usuario siempre estará situado en el espacio físico en el que está instalado Linux.
Al igual que en DOS, se utilizan rutas o caminos para realizar las operaciones con archivos, la forma de utilizar las trayectorias son relativas y absolutas. Las absolutas parten del directorio raíz. Las relativas tienen en cuenta nuestra posición actual dentro del sistema de archivos para definir el desplazamiento al fichero.
El directorio actual se representa con un “.” y el directorio raíz se representa con dos “. .”
Metacaracteres:
Es un conjunto de caracteres con significado especial para búsquedas o caracteres comodín.
“ ? ” sustituye a un solo carácter.
“ * “ sustituye a cualquier carácter o conjunto de ellos.
“[ ]” representa un solo carácter de los incluidos entre los corchetes.
“ ! “ permite negar o excluir caracteres.
Utiliza partes de nombres de archivos o directorios que se sustituirán por el carácter en el nombre de archivo o directorio en la posición en la que estén los corchetes. Pueden incluir rangos separados por un guión. Ejemplos:
[ ! 0-9]* busca ficheros que no empiecen por números.
Arch[A-P] busca archivos que comiencen por Arch y dentro del rango A-P en mayúsculas.
*[ab]* busca archivos que contengan los caracteres a o b.
Directorios en Unix / Linux
FSH: es el estándar que intenta unificar la estructura de directorios para un sistema GNU/Linux. No es obligatorio su cumplimiento, pero la mayoría de las distribuciones lo siguen. FHS pretende seguir la tradición UNIX y aplicar las tendencias actuales.
Las partes principales de un sistema de archivos son: el directorio raíz (/), /usr, /var y /home.
El sistema de archivos en linux se llama NFS (sistema de archivos en red), no se monta en local. Es un protocolo que permite acceder a archivos que están en máquinas remotas como si estuviesen localmente en mi equipo. La estructura FHS pretende agrupar los archivos de acuerdo a su propósito, es decir:
– Todos los comandos están en el mismo lugar.
– Todos los archivos de datos están en otro lugar.
– La documentación está en un tercer lugar, etc.
El directorio raíz no contiene, generalmente, archivos excepto el /vmlinuz que es la imagen del núcleo estándar. Todos los demás se encuentran en subdirectorios bajo el sistema de archivos raíz.
Directorios importantes
/bin | Contiene comandos de ficheros ejecutables, necesarios durante el inicio del sistema que pueden ser utilizados por usuarios normales (ls, kill, more, su, etc). |
/sbin | Igual que /bin pero los comandos no están destinados a usuarios normales por defecto, sólo para el root. |
/etc | Contiene ficheros de configuración y utilidades para la administración del sistema. |
/root | Directorio local para el usuario root. |
/lib | Contiene librerias compartidas necesarias para los programas. |
/dev | Archivos de dispositivos. Archivos asociados a dispositivos hardware. |
/temp | Almacena archivos temporales. Suele ser un enlace simbólico a /var/tmp. |
/boot | Archivos utilizados por el cargador de arranque, por ejemplo GRUB o LILO. |
/mnt | Punto de montaje temporal para los sistemas de archivos montados por el administrador del sistema y los dispositivos. |
/opt | Punto de montaje desde el que se instalan los paquetes de aplicación adicionales. |
/usr o /home | Utilidades y programas generales de cada usuario. |
/initrd | Sistema de archivos temporal que utiliza el kernel al arrancar el sistema. |
/media | Almacena los puntos de montaje de los dispositivos extraíbles (CD-Rom, disquetes, zip, USB). |
/proc | Ofrece información relacionada con procesos del sistema. |
/var | Contiene datos que varían o variables de sistema que se modifican cuando el sistema se ejecuta normalmente. No es compartido ya que es especifico de cada sistema. |
/srv | Directorios que usan los distintos servidores que tengamos instalados (web, ftp, etc) |
/sys | Contiene archivos de sistema. |
/last + found | Guarda ficheros que contiene algún tipo de errores provocados por ejemplo por un corte de luz, por haber matado el proceso init con el comando kill. |
Comandos
df | Informa de la utilización del espacio en disco en función de los sistemas de ficheros que tengamos, es decir, de cada partición.
tmpfs: es un dispositivo virtual que se usa como sistema de archivos temporal, es decir, utiliza memoria RAM por lo que al apagar el equipo, el contenido se pierde. udev: gestor de dispositivos que usa el kernel. Controla los ficheros de dispositivo en /dev. Tiene su propia partición que se llama igual que él. Al comando df podemos pasarle como parámetro un sistema de ficheros concreto, por ejemplo: df –h /etc (nos mostrará información de /etc). |
||||||||||||
du | Informa del espacio en disco en función de los directorios, es decir, cuanto ocupa un directorio en disco. Por defecto sólo muestra información sobre los directorios en global, es decir, no muestra información de cada archivo.
Ej: $ du –s /dev (muestra el espacio de /dev pero no los subdirectorios). |
||||||||||||
ls | Lista el contenido de un directorio.
La zona de permisos se llama máscara. Ej: d r w x r – x r – x d: tipo de fichero (d: directorio, –: fichero, l: enlace) rwx: permisos sobre el archivo del usuario propietario (r: lectura, w: escritura, x: ejecución). r-x: permisos que tienen los usuarios del mismo grupo que el propietario. r-x: permisos que tienen el resto de los usuarios. |
Apuntes propios. Contenido bajo licencia Creative Commons (Reconocimiento – NoComercial – SinObraDerivada (by-nc-nd)).