Matheus Calegaro

(mais um) Blog sobre desenvolvimento e outras bobeiras.

Entendendo a estrutura de diretórios de uma distribuição GNU/Linux

Vamos dar uma olhada na estrutura de diretórios de uma distribuição GNU/Linux e descobrir o propósito de cada um no sistema operacional.

Sistema de Arquivos

Qualquer sistema operacional necessita de uma estrutura que dê suporte a ele para ler e escrever na unidade de armazenamento. Os sistemas de arquivos cumprem esta necessidade, permitindo com que as diversas operações de disco feitas pelo S.O. sejam destinadas ao locais certos da unidade.

No mundo Linux atual, temos, dentre outras opções, o sistema EXT4 como o mais popular e muitas vezes utilizado como a opção padrão na instalação de uma distro. Ele não é o sistema mais avançado atualmente, mas ainda é sólido, estável e confiável, além ser do tipo journaling que mantém o controle das alterações feitas em um log (journal) antes de escrevê-las no disco, garantindo assim que o sistema de arquivos não seja corrompido em algum tipo de acidente (falta de energia, por exemplo).

Estrutura de diretórios

Para começar, vamos ver uma visão geral do diretório princial / (raiz) com o comando tree.

mathcale@tardis:/$ tree -L 1
.
├── bin
├── boot
├── dev
├── etc
├── home
├── lib
├── lib64
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin
├── srv
├── sys
├── tmp
├── usr
└── var

18 directories, 0 files
  • /bin (binanies): Onde ficam os executáveis e comandos essenciais do sistema operacional;
  • /boot: Onde ficam os arquivos necessários para a inicialização do sistema, como a imagem do kernel;
  • /dev (devices): Aqui encontramos os arquivos que representam os dispositivos do sistema, como discos, DVDs, terminais e também vemos pseudo-dispositivos que correpondem ao hardware hospedeiro, como /dev/random que gera números aleatórios e o /dev/null, uma espécie de “buraco negro” onde todo output a ele direcionado é descartado;
  • /etc: Contém arquivos de configuração, os quais podem ser editados facilmente com um editor de textos de sua preferência;
  • /home: Contém as pastas de cada usuário do sistema, onde ele pode guardar seus documentos pessoais e suas configurações para determinados programas (.bashrc e .vimrc, por exemplo);
  • /lib e /lib64 (libraries): Onde estão as bibliotecas essenciais ao sistema, utilizadas pelos programas em /bin e módulos do kernel;
  • /media: Contém subdiretórios quando mídias removíveis (pendrive ou HD externo, por exemplo) estão conectadas e montadas;
  • /mnt (mount): Geralmente é utilizado para pontos de montagem de outros sistemas de arquivos (por exemplo, se quiser montar a partição da sua instalação Windows, coloque-a neste diretório);
  • /opt (optional): Onde os programas de terceiros são instalados (o Chrome e o Java são instalados neste diretório);
  • /proc (process): Semelhante ao /dev no quesito “não possuir arquivos de verdade”, mas sim arquivos que representam informações do sistema e de processos;
  • /root: A /home do super usuário (root)
  • /run: Provê um local padrão para as aplicações armazenarem arquivos transitórios como sockets e IDs de processos;
  • /sbin (system binaries): Semelhante ao /bin: contém binários que são executados pelo usuário root para administração do sistema;
  • /srv (service): Contém dados para serviços providos pelo sistema;
  • /tmp (temporary): Onde ficam os arquivos temporários do sistema, que são apagados quando o sistema é reinicializado;
  • /usr (user [binaries and read-only data]): Onde estão as aplicações e arquivos não-essenciais usados pelo usuário, e não pelo sistema. Também encontramos outros assets, como itens gráficos;
  • /var (variable): É a “parte” do /usr que possui direito de escrita. Coisas em operação normal geralmente vêm pra cá, como logs em /var/log.

Comentários