Este artigo tinha postando no meu antigo blog, resolvi trazer ele para aqui também :)

Num sistema Linux geralmente temos uma estrutura de diretórios um pouco complexa. Os arquivos ali dispostos, a princípio, parecem estar jogados aleatoriamente nos diversos diretórios existentes. Mas, felizmente, há uma certa ordem e uma lógica fazendo com que cada diretório do sistema tenha uma finalidade específica. Antes de irmos entender os diretórios precisamo dar uma pincelada e algumas informações uteis,que serão bem uteis em breve e também ajuda a entender o motivo dos diretórios(caso você esteja querendo ser um desenvolvedor ou e um).

Diretórios

Primeira coisa com que você precisa se habituar é que no Linux os discos e partições não aparecem necessariamente como unidades diferentes, como o C:, D:, E: do Windows. Tudo faz parte de um único diretório, chamado diretório raiz(root) ou simplesmente “/”.
Dentro deste diretório temos não apenas todos arquivos e as partições de disco, mas também o CD-ROM, drive de disquete e outros dispositivos, formando a estrutura que você vê no gerenciador de arquivos.

/bin - é o diretório que contém o mínimo necessário para funcionar e poder ser manuseado pelo administrador. Serão necessárias ferramentas que se encontram em outros diretórios para que a máquina fique operacional. A maioria dos programas possui o seu arquivo executável neste diretório.

/boot – contém informações para o gerenciador de inicialização do sistema. É aqui que normalmente fica o arquivo contendo o kernel da máquina e informações para o carregador do sistema operacional.

/cdrom – Não é propriamente um diretório, mas sim um link para o diretório /media/cdrom (ponto de montagem do dispositivo leitor de CD/DVD da máquina;

/dev – é o local onde ficam armazenadas as referências aos dispositivos presentes na máquina, para o controle destes dispositivos. Esse diretório contém apontadores para, por exemplo, o drive de disquetes, os discos da máquina, terminais virtuais, portas de acesso seriais e paralelas, etc. Os controladores são automaticamente criados durante a instalação do sistema e posteriormente podem ser criados através do comando MAKEDEV.

  • devfs – contém todos arquivos-dispositivos, inclusive para dispositivos que não existem no computador e irá ocupar espaço em disco.
  • udev – utilizado a partir do kernel 2.6.12, não ocupa espaço em disco e contém somente os arquivos-dispositivos dos devices presentes na máquina.

/etc – é um dos mais importantes diretórios da máquina. Nele ficam a maioria dos arquivos de configuração e manipulação dos serviços essenciais ao sistema, a maioria dos arquivos de configuração de acesso a rede e de comunicação, arquivos de configuração do Sistema de Janelas X, arquivos de configuração do idioma do sistema, de atualizações, enfim, de muitas funcionalidades da máquina.

/home – contém os diretórios pessoais dos usuários e suas configurações(funciona como a pasta Meu Documentos,no windows).

/lib – é o diretório onde ficam as bibliotecas básicas do sistema. Elas são compartilhadas por diversos programas, principalmente os que se encontram no diretório raiz.

/mnt – é o diretório utilizado para o acesso a dispositivos de mídia, como disquetes e CD-ROM. Ele é utilizado como ponto de montagem para a maioria destes dispositivos.

/proc- Não é bem um diretório. Trata-se de um filesystem virtual, cheio de arquivos virtuais, que na verdade são apenas referências dinâmicas dos procedures (procedimentos) do Kernel Linux, que são alteradas constantemente durante a utilização do sistema; fornece informações sobre o kernel e sobre os processos que estão rodando no momento, além de informações sobre a utilização de alguns dispositivos. Alguns parâmetros do kernel podem ser alterados diretamente nesses arquivos, fazendo com que as modificações passem a valer imediatamente. Esse diretório não ocupa espaço nenhum em disco e as informações ali presentes são geradas apenas quando solicitadas.

/root -  Esse é o diretório do superusuário do sistema (pode chamar de administrador se quiser, mas não perto de mim, pois me lembra do termo usado por outro sisteminha (semi)operacional proprietário do qual não gosto muito ;-)). O único usuário do sistema com permissão para realizar qualquer modificação no sistema. Aí você me pergunta: “Mas gmazk, se é uma pasta de usuário, porque não está dentro de /home ?”. E eu explico: conforme você vai ver na minha próxima publicação (a respeito de planejamento do particionamento da maquina e instalação do sistema), é conveniente durante a instalação do sistema, determinar que o diretório /home seja montado em uma partição separada da partição principal (onde estão os demais diretórios do sistema). Se o diretório root estivesse nessa partição separada (dentro de /home) e ocorresse com essa partição, o que costumo chamar de um “momento PUTZ… ferrou!”, a pasta /root também estaria inacessível, e como você já sabe, certas coisas só podem ser feitas no sistema pelo usuário root… Então você não poderia, por exemplo, inicializar o sistema para realizar uma recuperação nessa partição;

/opt – Se verificar o conteúdo deste diretório, MUITO provavelmente ele estará vazio. A ideia inicial deste diretório era armazenar programas que não fizessem parte da distribuição GNU/Linux instalada em seu sistema, porém, esse método de separação quase não é utilizado; Ele pode ser útil por questões de espaço.

/sbin contém ferramentas de interesse do superusuário e que geralmente são usadas por serviços básicos da máquina. Ficam nesse diretório programas como os responsáveis pela carga de módulos do kernel, ativação e interrupção das interfaces de rede, manutenção dos sistemas de arquivos e outras atividades.

/srv – É um diretório que sofre do mesmo problema de esquecimento e solidão que o diretório opt, pois não é utilizado nunca… A ideia inicial era usá-lo para armazenar dados que seriam disponibilizados por qualquer programa servidor que você utilizasse no sistema, mas foi outra ideia que “não pegou”;

/sys – O nome vem do sysfs (sys filesystem). É o diretório usado pelo Kernel Linux para manter dados atualizados sobre os dispositivos de hardware da máquina (não confunda, não é a mesma coisa que /dev, já que no /dev estão arquivos que servem de ligação com os dispositivos, e não informações sobre eles);

/tmp serve como repositório para arquivos temporários, sendo utilizado para programas que são executados após a ativação do sistema, ou seja, este diretório serve como espaço extra para vários programas e aplicações.

/var - Contém arquivos que são modificados com o decorrer do uso do sistema (e-mail , temporários, filas de impressão, manuais).

Dentro do /var encontramos:

  • /var/lib - Bibliotecas que mudam enquanto o sistema está rodando.
  • /var/local – Arquivos variáveis de programas que estão rodando.
  • /var/lock – Travas para indicar que um programa está utilizando um determinado dispositivo.
  • /var/log – Arquivos de log do sistema (erros, logins, etc..)
  • /var/run – Arquivos importantes ao sistema úteis até o próximo boot (atualizações de softwares e kernel).
  • /var/spool – Diretório de filas de impressão, e-mail e outros
  • /var/tmp – Arquivos temporários dos programas
  • /var/catman – Um cache para manuais que são formatados na hora de serem utilizados.

O diretório /usr

Este e um diretório interessante que preciso explicar melhor.O que tem nele?Contém os arquivos das ferramentas e dos aplicativos do usuário.

  • /usr bin :Contém ferramentas e aplicativos de cada usuário.Ao criar uma nova conta de usuário,o sistema cria automaticamente uma pasta /usr/bin
  • /usr dict :Diretório que são armazenados os dicionários(o nome dict deriva do inglês dictionary) e as listas de termos do usuário.
  • /usr/doc :Esse Diretório contem a documentação do sistema em uso.
  • /usr/info :Nesse Diretório encontramos os arquivos para o sistema GNU info,baseado em hipertextos
  • /usr/lib :Assim como o Diretório /bin da raíz contem as bibliotecas para execução das ferramentas,dessa vez,porem,trata-se dos componentes das ferramentas,dessa vez,porem,trata-se dos componentes das ferramentas que se encontram no Diretório /usr/bin
  • /usr/local :Essa pasta contem arquivos locais,ou seja,exclusivos para cada sistema(ou aplicativo),que incluem documentação(/usr/local/doc)e os programas em si(/usr/local/bin).
  • /usr/man :diretório que agrupa os manuais que podem ser lidos com o comando man.
  • /usr/share :Contém arquivos e componentes compartilhados por vários aplicativos.Nesse Diretório,encontramos diversos subdiretórios com arquivos de ajuda,ícones,etc.
  • /usr/src : Esse diretório contem o codigo-fonte(source)dos softwares disponíveis no sistema. Esses sources podem ser visualizados e alterados livremente.
  • /usr/tmp :E o diretório em que são colocados os arquivos temporários gerados pelo usuário ativo.

Comandos do Sistema de Arquivos

Aqui estão os comandos para lidar com o sistema de arquivos (HDs, drives e partições de rede).Para mais informações sobre o comando use o

$man

  • badblocks – Utilizado para encontrar defeitos físicos no HD.
  • cfdisk – Similar ao fdisk só que com uma interface melhorada.
  • df – Mostra o espaço livre no disco.
  • dosfsck -Verifica e repara sistemas FAT do DOS.
  • du – Mostra o espaço que ocupa um diretório e os arquivos internos.
  • dump – Usado para fazer o backup de um sistema ext2. O complemento deste comando é o restore.
  • dumpe2fs – Faz o backup de blocos do HD e grupos.
  • e2fsck – Verifica um volume ext2 em busca de erros.
  • e2label – Muda o nome de uma partição ext2.
  • fdisk – Usado para criar, editar e apagar partições no HD.
  • fdformat – Formata um disquete.
  • mount – Usado para “montar” um sistema de arquivos. O complemento deste comando é o umount.
  • restore – Usado para restaurar um sistema ext2.
  • umount – Desmonta o sistema de arquivos. O complemento é o comando mount.
  • cdrecord – Grava CDs.
  • cdparanoia – Grava CDs de áudio.

Manipulação de arquivos e diretórios

  • cd – Muda para um diretório. Se você não especificar nada ele muda para seu diretório HOME.
  • chmod – Muda as permissões para acesso aos arquivos e diretórios (Escrita, Leitura, etc..)
  • chown – Muda o proprietário e grupo de um arquivo ou diretório.
  • chgrp – Muda o grupo de um arquivo ou diretório.
  • cp – Copia os arquivos de um diretório/pasta para outro diretório/pasta.
  • dir – Lista o conteúdo de um diretório (preferir o comando “ls”).
  • find – Procura arquivos com determinadas características na árvore de diretórios.
  • ln – Cria um link simbólico para um arquivo.
  • ls – Lista os arquivos de um diretório.
  • mc – Midinght Commander. Um gerenciador de arquivos completo para o console.
  • mkdir – Cria um diretório.
  • mv – Move ou renomeia um arquivo.
  • rm – Exclui arquivos.
  • rmdir – Exclui um diretório vazio.
  • vdir – Lista o conteúdo de um diretório.
  • wheris – Localiza o executável, código fonte e manual de um comando.

Neste artigo encontra mais informações sobre os comandos descritos acima.

Referencias:
http://www.guiadohardware.net/dicas/linux-entendendo-arvore-diretorios.html
http://www.danbp.org/linuxcom.html