Sistemas de Archivos Linux
En Linux y Unix todo es un fichero. Los directorios son archivos y los dispositivos son archivos. Los archivos están organizados en un árbol jerárquico donde existe la relación padre-hijos (los directorios pueden contener otros directorios u otros archivos). Todos los archivos parten de una ruta raíz que se representa con el carácter /
. Cualquier fichero puede ser referenciado por un nombre de ruta. El directorio /
sirve como punto de montaje para el resto de directorios del sistema. Un punto de montaje no es más que un directorio vacío que sirve para que sean montados otros directorios de una partición de un disco.
Un nombre de ruta absoluto comienza con el carácter /
del que siguen todos los directorios hijos que deben ser atravesados para llegar al fichero, cada uno separado por el signo /
.
Un nombre de ruta relativo es aquel que no comienza por /
. En este caso el árbol de directorios se recorre a partir de un punto determinado que cambia según el directorio actual donde nos encontremos (contexto). En cada directorio hay dos directorios especiales: .
que representa el contexto o directorio actual, y ..
que representa al directorio padre del contexto.
Este es un ejemplo de un directorio representado por su ruta absoluta:
/var/lib/
Este es un ejemplo de un fichero representado por su ruta absoluta:
/usr/bin/echo
Este es un ejemplo del directorio anterior representado por ruta relativa tomando /home/myusername
como contexto actual:
../../var/lib/
Este es un ejemplo del fichero anterior representado por ruta relativa tomando /usr/
como contexto actual:
./bin/echo
El carácter especial ~
representa el directorio home en forma de ruta absoluta del usuario actual. El directorio home para usuarios finales suelen estar localizados dentro de /home/
seguidos de una carpeta que representa el login del usuario. Si tenemos un usuario roxsross
su directorio home será /home/roxsross
. Esto suele ser diferente de otros usuarios del sistema que son utilizados para ejecutar demonios o procesos en segundo plano. El home del usuario root
es /root/
.
Este es un ejemplo de una ruta absoluta de un fichero dentro del directorio Downloads
de mi home siendo un usuario cuyo login es roxsross:
~/Downloads/devops.txt
Es equivalente a:
/home/roxsross/Downloads/devops.txt
Los archivos o directorios pueden contener espacios y otros caracteres especiales. Estos caracteres deben escaparse con una \
a la hora de acceder a ellos o estar encerrados entre comillas.
Los siguientes ejemplos representan directorios con espacios:
~/My\ Videos/
"~/My Videos/"
~/"My Videos"/
Organización del Sistema de Archivos en Linux
En Linux, el sistema de archivos está organizado en una estructura jerárquica, con el directorio raíz (/) en la parte superior de la jerarquía. El directorio raíz contiene varios subdirectorios, cada uno con un propósito específico, que forman la base de la jerarquía del sistema de archivos de Linux. Los subdirectorios incluyen:
/bin
contiene los comandos de terminal más comunes./boot
contiene los archivos necesarios para arrancar el sistema, incluyendo el kernel, la imagen disco RAM y los archivos de configuración del gestor de arranque./dev
contiene todos los archivos que representan los dispositivos. Estos son tipos de archivos especiales que apuntan a diferentes.dispositivos hardware en el sistema, incluyendo discos duros./etc
contiene los archivos de configuración del sistema, que afectan al comportamiento del sistema para todos los usuarios./home
contiene los directorios principales de los usuarios./lib
contiene entre otras cosas módulos de kernel y librerías dinámicas muy importantes/media
está pensado para ser utilizado como punto de montaje de dispositivos externos (discos duros, CDs, DVDs, etc)./mnt
también está pensado para ser utilizado como punto de entrada de montaje de dispositivos externos, concretamente los temporales (sistema de archivos en red, dispositivos extraíbles, etc)./opt
está pensado para contener software adicional del sistema que no esté manejado por el gestor de paquetes./proc
es un sistema de archivos virtuales que utiliza el kernel como mecanismo para enviar información a los procesos./root
es el directorio del usuario administrador./run
es un sistema de archivos temporal para almacenar información de procesos pasajeros./sbin
contiene comandos administrativos importantes que suelen ser utilizados por el superusuario./srv
está pensado para contener directorios de servicios de sistema como HTTP, FTP, etc./sys
es otro sistema de archivos virtuales del que se puede obtener o establecer configuraciones para el kernel./tmp
está concebido para ser un directorio de archivos temporales para las aplicaciones./usr
contiene la mayoría de aplicaciones y utilidades a la que los usuarios tienen acceso./var
está dedicado a contener datos variables de aplcaciones como logs, bases de datos, correos.