El Árbol de Directorios de Linux. Conoce las Principales Carpetas

Muy buenas lector, en el post de hoy conocerás en detalle la jerarquía de directorios de Linux y otros derivados de Unix, así que si eres un usuario relativamente nuevo, o si simplemente tienes curiosidad para indagar un poco más en como se estructuran los diferentes directorios en Linux y sus funciones, este es tu post.

Como al final, entre tantas carpetas, me ha quedado el post un poco largo, lo he dividido principalmente en dos partes. En la primera conocerás qué es el Filesystem Hierarchy Standard, mientras que en la segunda parte es donde podrás consultar el listado con los diferentes directorios y conocer para que se utilizan cada uno. Sin alargarme más en la introducción, te dejo debajo con el índice.

Tabla de contenidos:

  1. El Estándar de Jerarquía de Directorios o FHS
  2. Principales directorios y sus funciones
    1. Directorio raíz o /
    2. Bin, Sbin
    3. Boot
    4. Dev
    5. Etc
    6. Home
    7. Lib
    8. Media
    9. Opt
    10. Proc
    11. Root
    12. Srv
    13. Sys
    14. Tmp
    15. Usr
    16. Var
  3. Listar y visualizar las diferentes carpetas
  4. Antes de acabar

El Estándar de Jerarquía de Directorios o FHS

La estructura de los directorios de Linux, así como su contenido y funciones, viene definida en el denominado Filesystem Hierarchy Standard o FHS por sus siglas en inglés, que en otras palabras viene a ser el estándar de jerarquía para los sistemas de archivos en sistemas Linux y otros derivados de UNIX.

El FHS nació en 1994 y es actualmente mantenida por la Linux Foundation. Aun siendo un estándar, hay casos de distribuciones GNU/Linux que directamente apuestan por él (Gobo Linux es un ejemplo de ello). Otras, por contra, si que hacen un esfuerzo en adaptarse en lo máximo posible a él, pero suelen desviarse en algunas áreas.

Como puedes ver en la siguiente imagen, todo el árbol de parte de una raíz común denominada root y que se simboliza por una barra inclinada. Aún así, esto no significa que varios de ellos no puedan estar en particiones separadas del resto. De hecho, en muchas distros GNU/Linux es una práctica muy común el hecho ubicar ciertos directorios, como /home, en particiones separadas del resto.

Jerarquía de Directorios de Linux

Dicho esto, la FHS distingue entre lo que serían directorios estáticos, que son aquellos que contienen binarios, bibliotecas, documentación, etc., de los dinámicos, que son aquellos que requieren de acciones más a menudo, tales como copias de seguridad, etc.

También podemos diferencias claramente lo que son los directorios compartibles, que significa que contienen ficheros que pueden utilizarse desde otros dispositivos, de los no compartibles, que solo pueden utilizarse desde el dispositivo en el que se encuentran.

Principales Directorios y sus Funciones

Ahora que ya conoces el estándar de jerarquía de directorios utilizado en GNU/Linux, veamos un poco más en detalle cada unos de los directorios de forma concreta, empezando por el directorio raíz, que es desde donde nace el árbol.

Directorio Raíz o /

Toda la estructura de directorios en los sistemas basados en UNIX parte de un directorio raíz también llamado directorio root y que se simboliza por una barra inclinada o /. De este directorio, es desde donde nacen todo el resto de directorios, independientemente que estén almacenados en particiones diferentes, o incluso en unidades físicas separadas.

Cualquier dirección de archivo o carpeta en Linux empieza por el directorio raíz o /, seguido de todos los directorios y subdirectorios que que lo contienen, separados cada uno de ellos por /.

A continuación conocerás con más en detalle a todos los directorios principales que parten del directorio raíz, junto con sus subdirectorios más importantes y los ficheros que suelen contener.

Bin, Sbin

El directorio /bin es un directorio estático y es donde se almacenan todos los binarios necesarios para garantizar las funciones básicas a nivel de usuario. Solo almacena los ejecutables de usuario, ya que los binarios necesarios para tareas administrativas gestionadas por el usuario root o superusuario del sistema se encuentran en el directorio /sbin.

Incluye también los binarios que permiten la ejecución de varias utilidades estándar de la terminal de Linux, concretamente cat, cd, cp, echo, grep, gzip, kill, ls, mv, rm, ping, su, ps, tar y vi.

El directorio /sbin hace lo mismo pero para los binarios relativos tareas propias del sistema operativo, y que solamente pueden ser gestionadas por el usuario root, tales como el arranque, tareas de restauración, reparación, etc.

Boot

Es un directorio estático e incluye todos los ejecutables y archivos que son necesarios en el proceso de arranque del sistema, y que deberán ser utilizados antes que que el kernel empiece a dar las órdenes de ejecución de los diferentes módulos del sistema. Es también donde se encuentra el gestor de arranque GRUB.

En algunas distribuciones, es común que ese directorio se almacene en su propia partición separada del resto. Esto suele darse sobretodo en el caso de de que utilicen LVM por defecto, ya que tradicionalmente el gestor de arranque GRUB (en versiones anteriores a GRUB 2) no podía arrancar desde LVM, por lo que se requería que estuviera en una partición separada.

De hecho, si en una instalación normal de Ubuntu o Debian optas por utilizar LVM, verás que el instalador ya te genera un esquema de particiones con el directorio /boot en una partición aparte.

En estos casos, en el momento de instalar el sistema es importante prever bien el espacio que le vayas a dar a la partición, ya que a la larga, con la acumulación de diferentes actualizaciones del Kernel, es común que se quede sin espacio. Si esto sucede, puedes tener problemas a la hora de instalar futuras actualizaciones del núcleo, y debas hacer limpieza de versiones antiguas del kernel.

Dev

Este directorio incluye todos los dispositivos de almacenamiento, en forma de archivos, conectados al sistema, es decir, cualquier disco duro conectado, partición, memoria USB, o CDROM conectado al sistema y que el sistema pueda entender como un volumen lógico de almacenamiento.

Siendo esto así, verás que la ruta en la que se encuentra cualquier volumen (partición o dispositivo externo) conectado al sistema siempre empieza por /dev.

Este es el directorio que contiene, por decirlo de algún modo, la información de cada uno de los volúmenes, a diferencia del directorio /media, que verás más adelante, que lo que contiene son solo los puntos de montaje, pero no la información real de estos volúmenes.

Para ver esto en la práctica, si abres una ventana de terminal y ejecutas el comando sudo fdisk -l, verás la estructura de particiones de tu sistema. En una instalación típica de cualquier distro GNU/Linux suele ser la siguiente:

/dev/sda1 - Partición principal
/dev/sda2 - Partición extendida 
/dev/sda5 - Partición Swap

La partición /sda1 suele ser la partición principal, Obviamente si has editado manualmente el esquema de particiones, en tu caso será diferente, esto es solo un ejemplo típico para ayudar a explicar la función del directorio /dev.

Eso en cuanto a particiones. Si se trata de un dispositivo externo, el volumen estará igualmente dentro de /dev, pero en este caso varía el nombre que el sistema le asigna a dicho volumen. Generalmente la estructura suele ser la siguiente (si ejecutas nuevamente el comando sudo fdisk -l con un dispositivo externo conectado lo podrás comprobar tu mismo).

/dev/sdb1
/dev/sdb2
/dev/sdb3
...

Etc

Es el encargado de almacenar los archivos de configuración tanto a nivel de componentes del sistema operativo en sí, como de los programas y aplicaciones instaladas a posteriori.

Es un directorio que debería contener únicamente ficheros de configuración, y no debería contener binarios.

Home

Es el directorio de los usuarios estándar, y por lo tanto, el destinado a almacenar todos los archivos del usuario, como documentos, fotos, vídeos, música, plantillas, etc. También incluye archivos temporales de aplicaciones ejecutadas en modo usuario, que sirven para guardar las configuraciones de programas, etc.

Dentro /home hay los directorios personales de todos los usuarios, nombrados según el nombre de usuario utilizado. Así por ejemplo, si en un sistema pongamos que hay dos usuarios denominados User1 y User2, la estructura será así:

/home/User1
/home/User2

Cada directorio de usuario contiene asimismo diferentes carpetas para ayudarlo a clasificar la información. Estas generalmente son: /Documentos, /Imágenes, /Música, /Plantillas y /Vídeos, así como otros archivos y carpetas ocultas, que son las encargados de guardar la información de configuraciones de las aplicaciones del usuario.

Para visualizar los ficheros ocultos dentro del directorio individual de cada usuario, puedes hacerlo rápidamente mediante la combinación de comandos CTRL + F. Por cierto, y muy importante, todas los archivos y carpetas ocultas en Linux empiezan por un punto, seguido del nombre de la carpeta.

En muchas distribuciones es una práctica recomendada el hecho de ubicar el directorio /home es una partición separada del resto, por tal de facilitar que, en caso de reinstalar el sistema operativo, puedas mantener intacta la partición de la /home, y de este modo mantener todos los archivos personales.

Lib

Incluye las bibliotecas esenciales  que son necesarios para que se puedan ejecutar correctamente todos los binarios que se encuentran en los directorios /bin y /sbin, así como los módulos del propio kernel.

En los sistemas operativos de 64 bits, además de /lib existe otro directorio denominado /lib64, referida a las bibliotecas para aplicaciones de 64 bits.

Media

Representa el punto de montaje de todos los volúmenes lógicos que se montan temporalmente, ya sean unidades externas USB, otras particiones de disco, etc.

En la mayoría de distribuciones GNU/Linux, desde hace ya algún tiempo, cada vez que se monta una unidad externa, partición, etc., esta se monta dentro del directorio /media y a su vez dentro de un directorio especifico dependiendo del usuario del sistema que monta el volumen.

De este modo, si en un sistema hay varios usuarios, pongamos User1 y User2, los puntos de montaje de los volúmenes que montan cada uno de ellos se mostraran en directorios separados tal como así:

/media/User1
/media/User2

Antiguamente se solía utilizar el directorio /mnt para estas funciones, pero actualmente, la mayoría de distribuciones hacen uso de /media.

Opt

En cierto modo vendría a ser como una extensión del directorio /usr, pero en este caso van todos aquellos archivos de solo lectura que son parte de programas auto-contenidos y que, por lo tanto, no siguen los estándares de almacenar los diferentes archivos dentro de los diferentes subdirectorios de /usr (que sería lo recomendable)

Haciendo una analogía con Windows, vendría a ser algo como el directorio de «Archivos y Programas», pero en este caso, como hemos dicho, para determinados programas que ya vienen auto-contenidos.

Proc

Este directorio contiene información de los procesos y aplicaciones que se están ejecutando en un momento determinado en el sistema, pero realmente no guarda nada como tal, ya que lo que almacena son archivos virtuales, por lo que el contenido de este directorio es nulo.

Básicamente son listas de eventos del sistema operativo que se generan en el momento de acceder a ellos, y que no existen dentro del directorio como tales.

En este enlace de LinuxTotal tienes información más detallada sobre las particularidades de este directorio y todo el juego que le puedes sacar a la hora de obtener información muy diversa del sistema.

Root

Vendría a ser como el directorio /home del usuario root o superusuario del sistema.

A diferencia de los otros usuarios, que se encuentran todos dentro de /home en sus respectivas subcarpetas, el directorio del usuario root está en su propia carpeta colgando directamente de la raíz del sistema.

Srv

Sirve para almacenar archivos y directorios relativos a servidores que puedas tener instalados dentro de tu sistema, ya sea un servidor web www, un servidor FTP, CVS, etc.

Así, por ejemplo, en el caso de tener instalado un servidor web, sería buena idea tener el directorio web público dentro de /srv, tal como así:

/srv/www

Sys

Al igual que /proc, contiene archivos virtuales que proveen información del kernel relativa a eventos del sistema operativo.

Es en cierto modo una evolución de /proc, y a diferencia de este último, los archivos se distribuyen de forma jerárquica.

Tmp

Como ya da a entender su nombre, sirve para almacenar archivos temporales de todo tipo, ya sea de elementos del sistema, o también de diferentes aplicaciones a nivel de usuario como puedan ser Firefox o Chrome/Chromium.

Es un directorio dispuesto para almacenar contenido de corta durada, de hecho en la gran mayoría de los casos se suele vaciar de forma automática en cada reinicio del sistema. Aun así, no debes borrar su contenido de forma manual, puesto que puede contener archivos necesarios para ciertos programas o procesos que estén ejecutándose.

Las aplicaciones programadas para almacenar archivos en este directorio deben asumir que solo serán recuperables en la sesión actual. En este sentido, hay otro subdirectorio, /var/tmp, dispuesto igualmente para el almacenamiento de archivos temporales, pero cuyo contenido no se borra de forma automática tras el reinicio del sistema.

Usr

El directorio /usr viene de «User System Resources» y actualmente sirve para almacenar todos los archivos de solo lectura y relativos a las utilidades de usuario, incluyendo todo el software instalado a través de los gestores de paquetes de cada distribución. Contiene los siguientes subdirectorios:

/usr/bin
/usr/include
/usr/lib
/usr/local
/usr/sbin
/usr/share
/usr/src

Antiguamente /usr también contenía la carpeta particular de usuario, junto con todos sus documentos, vídeos, fotos, etc., pero más adelante se creó el directorio /home para este propósito, dejando /usr reservado para los ficheros relativos a programas.

Var

Contiene varios archivos con información del sistema, como archivos de logs, emails de los usuarios del sistema, bases de datos, información almacenada en la caché, información relativa a los paquetes de aplicaciones almacenados en /opt, etc. En cierto modo se podría decir que actúa a modo de registro del sistema.

Listar y Visualizar las Diferentes Carpetas

Para poder visualizar u obtener un listado de todas las carpetas del sistema que cuelgan de la raíz, puedes hacerlo desde el mismo administrador de archivos, o bien desde la línea de comandos.

Desde el administrador de archivos, por defecto te encuentras siempre en tu carpeta principal de usuario dentro de la carpeta home. Para ver las carpetas del sistema debes dirigirte a la raíz, y verás todas las que cuelga de ella.

También puedes obtener un listado completo de todos los directorios que cuelgan de la raíz desde el intérprete de comandos. Para ello, debes abrir primero una ventana de Terminal y situarte en el directorio raíz.

El comando cd te servirá para situarte en el directorio raíz y con ls podrás visualizar todos los archivos y carpetas contenidos en él.

$ cd /
$ ls

También puedes jugar un poco con el comando ls, añadiendo ciertos parámetros para obtener listados más detallados. Una opción muy útil, por ejemplo, es ls -l, con la que obtendrás los diferentes directorios en forma de lista, junto con los permisos de lectura, escritura y ejecución asociados a cada una de ellos.

$ ls -l

Si lo haces sobre el directorio el directorio raíz, verás que todos los directorios de primer nivel que cuelgan directamente de ahí pertenecen al usuario root. Por contra, si lo haces sobre tu directorio Home, todo lo que cuelga de ahí verás que pertenece a tu usuario.

Antes de acabar…

Si has llegado hasta aquí y aun no tenias del todo claro como funcionaba el esquema de directorios en UNIX y Linux, espero que el post te haya sido de utilidad y que tengas mucho más claro como funciona y el significado de cada directorio.

Conocer, aunque solo sea por encima, el significado de cada uno de los directorios en Linux te puede ayudar mucho a entender ciertos comandos o a realizar ciertos pasos que requieren acceder a un fichero dentro de un directorio.

Como habrás visto, me he centrado en hacerlo lo máximo entendible posible pero sin entrar en grandes detalles técnicos, pero si quieres profundizar un poco más en los detalles, te recomiendo la lectura de estas guías de The Linux Documentation Project (en inglés).

Y ya por último, si quieres comentar algo, ya sabes que como siempre me encantará leerte aquí debajo, así que ya sabes ;)

Categorías LinuxEtiquetas ,

36 comentarios en “El Árbol de Directorios de Linux. Conoce las Principales Carpetas

  1. Gracias, muy bien contenido, bien explicado.

    Me gusta

  2. Muy claro, Gracias!!!

    Me gusta

  3. Super bien explicado y entendible. Muy buen aporte. Gracias.

    Me gusta

    1. animo bro

      Me gusta

  4. Muy claro y muy bien explicado, gracias por tu trabajo!!

    Me gusta

  5. Cristian Gganon 23 Jul 2019 — 03:17

    Excelente, muchas gracias por compartir!

    Me gusta

    1. CONFIDENCIAL 21 May 2023 — 15:22

      MUY BUENO

      Me gusta

  6. muy bueno y bien explicado…gracias por compartir..

    Me gusta

    1. Muchas gracias Oscar!

      Un saludo!

      Me gusta

      1. sos el de la capital felicidades bro por tu canal

        Me gusta

  7. Muy buena explicación, felicitaciones. Encuentro esta página, buscando información para colocar diferentes particiones para directorios aparte(no me explico bien) por ejemplo /usr, /home, /lib, /var, /boot, etc… todo en diferentes particiones, luego de tener una mala experiencia con un «kernel panic» que me llevó al límite de no sabefr que hacer… De nuevo, felicitaciones por su explicación, aunque no he encontrado lo que busco.

    Me gusta

  8. Excelente explicación muy bien detallado todo Gracias

    Me gusta

  9. Muchas gracias por la información buen blog, para iniciarse en el mundo linux

    Me gusta

  10. Muy buen post!!, aún no he leido todo tu blog, pero me interesa el tema de descomprimir e instalar los tar.gz, tgz, tar.bz2, tbz2, sh para debian gracias, tu post me fue de gran ayuda

    Me gusta

    1. Hola terminator!
      Muchas gracias por tu comment! Me alegra que sea de interés.

      Sobre lo que me comentas, te copio un post que quizá te interesa. Se centra más en la parte de la compresión y descompresión, pero tengo pendiente hacer un post sobre como ejecutar archivos .SH, .RUN, etc.

      https://computernewage.com/2015/11/18/como-comprimir-y-descomprimir-archivos-en-linux-desde-la-terminal/

      Saludos!

      Me gusta

  11. Un excelente resumen!

    Me gusta

  12. jesus manuel 23 Jun 2017 — 18:21

    Me gusto mucho su post me fue muy util, muchas gracias.
    saludos

    Me gusta

    1. Gracias a ti Jesus Manuel!

      Me gusta

  13. Los directorios . y .. ¿existen siempre en cualquier directorio Linux?

    Me gusta

  14. Gracias por el aporte

    Me gusta

    1. denada

      Me gusta

  15. La verdad que te pasaste :P sos un genio! esta mas claro que en otras paginas solo que capas en otra detallan mas cosas pero como base esta mas que bueno, me encantaría ver mas sobre tu material, hasta saber si haces vídeos tutoriales o cursos, por que me gustaría aprender todo xD lo que me puedas enseñar y se ve que tenes buena onda por que te gusta tu trabajo y contestas con la mejor a todo aquel que opino en la pagina eso también hizo que me interesara mas la tuya que cualquier otra muchas gracias por tomarte tu tiempo y dedicación en crear fuentes de conocimientos. =D

    Me gusta

  16. la verdad que soy nuevo en esto de linux y para poder aprobar una materia en la facu me ayudo mucho este post!!

    Me gusta

    1. Muchas gracias Nicolas,
      Es un gusto!

      Me gusta

      1. de nada corazon

        Me gusta

  17. Pues mucho mejor que la Wikipedia, aunque no está del todo claro la diferencia entre dev media y mnt

    Me gusta

    1. Hola Elias,
      Muchas gracias por tu comment!

      Por lo que entiendo de la Filesystem Hierarchy Standard, /dev es el directorio que contiene la información real relativa a las diferentes unidades. Si te fijas al visualizar la tabla de particiones de tu instalación, así como cuando conectas alguna unidad externa, ambas aparecen dentro de /dev, usualmente de la siguiente forma:

      /dev/sda1
      /dev/sda2

      /dev/sdb1
      ..

      Por otra parte, /media y /mnt se utilizan para los puntos de montaje de estas unidades, para representar la información de un modo que sea entendible para los usuarios. La diferencia básica es que /media se usa para los puntos de montaje automáticos de dispositivos extraibles USB u otras particiones del sistema, mientras que /mnt es para puntos de montaje temporales que el usuario (entiendo) puede crear manualmente.

      Si queremos hacer acciones tales como formatear una partición desde la terminal, debemos «atacar» a /dev, mientras que para acceder a la información y visualizarla en forma de directorios, accedemos mediante el volumen montado en /media.

      No se si me he sabido explicar bien. En cualquier caso espero haber resuelto tu duda, sino dime;)

      Hasta pronto!

      Me gusta

  18. Excelente. Era justo lo que buscaba,no quería algo extenso sino algo con lo que poder entender la lógica organizativa del sistema. Gracias.

    Me gusta

    1. Genial! Me alegro Sebastián;)

      Me gusta

  19. «todos los archivos ejecutables en Linux los podrás reconozer porqué empiezan por “./”.»
    Eso no es del todo cierto, » ./» es una referencia simbólica que solo alude al directorio actual. Otra cosa es que para hacer funcionar un ejecutable haya que introducir ./ejecutablesi no está en bin o sbin

    Le gusta a 3 personas

    1. Si tienes razón, lo quitaré del post;)
      Muchas gracias por la corrección!

      Me gusta

  20. ¡Excelente artículo! Precisamente estaba escribiendo en mi blog acerca del shell bash y casi olvido describir las carpetas «del sistema».

    Le gusta a 1 persona

    1. Muchas gracias!!
      A ver que tal el artículo cuando lo tengas;)
      Saludos!

      Me gusta

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.