Decía el gran Dennis Ritchie que “UNIX es muy simple, sólo se necesita un genio para entender su simplicidad“. Y realmente, aunque pueda parecer muy complejo en ciertas cosas, los *nix, y por tanto Linux, son bastante simples en otras. De hecho, es en esta simplicidad la que los hace tan buenos, flexibles y atractivos. Pues bien, en este artículo, vamos a explicar de una forma muy sencilla el árbol de directorios de GNU/Linux.

Así, los directorios o carpetas de tu distro no tendrán secretos para tí. Especial dedicación a aquellos que so nuevos y que provienen de Microsoft Windows, ya que si vienen de otros UNIX se adaptarán casi de inmediato por el parecido. Pero es cierto que en Windows quizás sepas dónde está la unidad C:, dónde están Documentos o Descargas, dónde el Escritorio o tal vez donde se instalan los programas, pero por la sencillez no necesitas conocer mucho más.

En cambio, en los *nix, sí que deberías conocer el árbol de directorios de una forma más profunda, ya que nos servirán para encontrar ficheros de configuración, instalar ciertos paquetes en el lugar adecuado, localizar las fuentes del kernel, o la imagen de éste, nuestros ficheros personales, etc.:

  • /: es el riectorio principal, la raíz o root. De él cuelgan el resto de directorios, es decir, todos los demás serán subdirectorios de éste (incluso si están en particiones o discos diferentes). Sin duda es la más importante.
  • /bin: es el directorio donde se almacenan los binarios, es decir, los programas que emplea el sistema para labores administrativas como los comandos cp, echo, grep, mv, rm, ls, kill, ps, su, tar, etc.
  • /sbin: la S es de System, y como su nombre indica, aquí se almacenan los binarios o programas que emplea el propio sistema operativo para tareas de arranque, restauración, etc. Por ejemplo, fsck, mount, mkfs, reboot, swapon,…
  • /boot: es el directorio de arranque, donde está la o las imágenes del kernel Linux que se cargarán durante el arranque, y también directorios y configuración del propio gestor de arranque.
  • /dev: es un directorio muy especial donde se encuentran los dispositivos de bloques o carácteres, es decir, ficheros que representan la memoria, particiones, discos, dispositivos de hardware, etc. Ya sabes que en UNIX “todo” es un archivo, y no unidades como en Windows…Por ejemplo, el disco duro o particiones serán /dev/sda1, /dev/sda2,…/dev/sdb1, etc.
  • /media o /mnt: son los directorios donde se establecen generalmente los puntos de montaje. Es decir, cuando insertamos algún medio extraible o recurso de red compartido, etc., que hayamos montado, estaría aquí si lo hemos puesto como punto de montaje. El primero es más específico para medios que se montan de una forma temporal.
  • /etc: muy importante para el administrador, ya que aquí residen los ficheros de configuración de los componentes del sitema y otros programas instalados.
  • /home: es el directorio para los usuarios estándar. Por ejemplo, aquí se almacenan dentro de directorios separados (uno para cada usuario con su nombre), los ficheros personales. Por ejemplo, /home/isaac o ~ sería mi directorio personal…
  • /lib o /lib64: es donde se alojan las bibliotecas necesarias para los binarios presentes en el sistema. En /lib64 estarán las de las apliaciones de 64-bit.
  • /opt: es un directorio que almacenará los paquetes o programas instalados en el sistema que son de terceros. Por ejemplo, si instalamos algún antivirus, Chrome, Arduino IDE,… o ciertos paquetes grandes, suelen instalarse aquí.
  • /proc: es otro directorio muy especial, más que un directorio es una interfaz por decirlo de un modo sencillo. Y aquí el sistema nos presenta los procesos como directorios numerados con el PID. Dentro de cada uno de ellos estará toda la información necesaria para la ejecución de cada proceso en marcha. Además, encontrarás ficheros de los que extraer información importante, como cpuinfo, meminfo, etc. Es precisamente de estos ficheros de los que extraen infromación algunos comandos que usamos habitualmente, como por ejemplo, cuando hacemos uso de free para consultar la memoria disponible, éste comando realmente estará mostrando el contenido de /proc/meminfo de una forma ordenada.
  • /root: no hay que confundirlo con /, una cosa es el directorio raíz o root y otra muy diferente /root. En este caso, se puede asemejar a un /home pero exclusivo para el usuario root o privilegiado.
  • /svr: almacena ficheros y directorios relativos a servidores que tienes instalados en el sistema, como web, FTP, CVS, etc.
  • /sys: junto con /dev y /proc, es otro de los especiales. Y como /proc, realmente no almacena nada, sino que es una interfaz también. En este caso, son ficheros virtuales con información del kernel e incluso, se pueden emplear algunos de sus ficheros para configurar ciertos parámetros del kernel.
  • /tmp: es el directorio para ficheros temporales de todo tipo. Es empleado por los usuarios para almacenar de forma temporal ciertos ficheros o incluso para almacenar cache o ciertos ficheros volátiles de navegadores web, etc. No obstante, hay otro directorio para lo mismo en /var/tmp.
  • /var: ya que lo he nombrado anteriormente, se trata de un directorio con directorios y ficheros que suelen crecer de tamaño, como bases de datos, logs, etc. Es precisamente los logs o registros del sistema por lo que es más popular este directorio, y allí encontrarás muchísima información de todo lo que ocurre en el sistema: /var/logs/. Dentro de dicho directorio encontrarás separados por directorios, los logs de multitud de software, incluído el sistema.
  • /usr: son las siglas de User System Resources, y actualmente almacnea ficheros de solo lectura relativso a utilidades del usaurio, como los paquetes que instalamos mediante el gestor de paquetes en nuestra distro. Dentro hay como una “réplica” del árbol de directorios vistos hasta ahora (casi todos) como si de un segundo nivel se tratase. Vas a encontrar /usr/bin, /usr/lib, /usr/sbin, /usr/src, etc., que por lo dicho anteriormente y sus nombres, puedes hacerte una idea de lo que almacenan. Solo decir que /usr/src es donde permanecerán los ficheros de código fuente.

Ten en cuenta que no todas las distros siguen este esquema y puede haber pequeñas variaciones, pero si se adaptan al FHS, no tendrás demasiado problema…

El artículo Explicación sencilla del arbol de directorios de GNU/Linux ha sido originalmente publicado en Linux Adictos.