Skip to main content

104.7 Padrão e Comandos para Localização de Arquiovos



As distribuições Linux vêm em todas as formas e tamanhos, mas uma coisa que quase todas compartilham é que seguem o Filesystem Hierarchy Standard (FHS), que define um "layout padrão" para o sistema de arquivos (Modo como os arquivos e diretórios são organizado, criando uma função para cada diretório), tornando a interoperação e administração do sistema muito mais fácil.

O padrão de hierarquia do sistema de arquivos


O Filesystem Hierarchy Standard (FHS) é um esforço da Linux Foundation para padronizar a estrutura e o conteúdo do diretório em sistemas Linux. A conformidade com o padrão não é obrigatória, mas a maioria das distribuições o segue.


Segue a estrutura básica dos diretórios:

DiretórioDescrição
/Este é o diretório raiz, o diretório superior na hierarquia. Todos os outros diretórios estão localizados dentro dele. Um sistema de arquivos é freqüentemente comparado a uma "árvore", então este seria o "tronco" ao qual todos os ramos estão conectados.
/binBinários essenciais para usar o sistema, disponíveis para todos os usuários.
Ex: cp, ls, rm, mv...
/bootArquivos necessários para o processo de inicialização, incluindo o disco RAM inicial (initrd) e o próprio kernel do Linux.
/devArquivos do dispositivo. Eles podem ser dispositivos físicos conectados ao sistema (por exemplo, /dev/sda seria o primeiro disco SCSI ou SATA) ou dispositivos virtuais fornecidos pelo kernel.
Ex: sda, tty, sr0, pts...
/etcUsado para configuração do Sistema.
Ex: passwd, profile, bash.bashrc...
/homeCada usuário no sistema possui um diretório "inicial" para armazenar arquivos pessoais e preferências, e a maioria deles está localizada em /home. Normalmente, o diretório inicial é o mesmo que o nome de usuário, então o usuário Jão teria seu diretório em /home/joao. As exceções são o superusuário (root), que possui um diretório separado (/root) e alguns usuários do sistema.
/libBibliotecas compartilhadas necessárias para inicializar o sistema operacional e executar os binários em /bin e /sbin. Também temos os módulos.
/mediaMídias removíveis montáveis pelo usuário, como unidades flash, leitores de CD e DVD-ROM, disquetes, cartões de memória e discos externos são montados aqui.
/mntPonto de montagem para sistemas de arquivos montados temporariamente.
/optInstalação de softwares por terceiros.
/rootDiretório inicial do superusuário (root).
/runDados variáveis de tempo de execução.
/sbinBinários essenciais para usar o sistema, disponíveis apenas para SysAdmins.
Ex: fdisk, mkfs, fsck, swapon...
/srvDados servidos pelo sistema. Por exemplo, as páginas servidas por um servidor web podem ser armazenadas em /srv/www.
/tmpArquivos temporários.
/usrDados do usuário somente leitura, incluindo dados necessários para alguns utilitários e programas não críticos secundários.
/proc e /sysSistema de arquivos virtual, contendo dados relacionados aos processos em execução e hardwares.
Ex: cpu, memória, swap...
/varDados variáveis gravados durante a operação do sistema, incluindo fila de impressão, dados de registro, caixas de correio, arquivos temporários, cache do navegador, etc.
/usr/localProgramas instalados pelo SysAdmin, pode ser no /opt ou aqui.
/usr/X11R6Muito pouco usado. Arquivos referente a interface gráfica.
/usr/binBinários não essenciais para todos os usuários.
Ex: head, du, dpkg, nice...
/usr/sbinBinários não essenciais para SysAdmin.
Ex: edquota, xfs_info, useradd...
/usr/libBiblioteca de programas.
/usr/share/manFonte de Manuais do Linux.


Localizando arquivos


Para pesquisar arquivos em um sistema Linux, você pode usar o comando find. Esta é uma ferramenta muito poderosa, cheia de parâmetros que podem se adequar ao seu comportamento e modificar a saída exatamente de acordo com as suas necessidades.


Para relembra o uso do find, consulta a seção onde falamos sobre ele, aqui



LOCATE


O comando locale usa um banco de dados interno para fazer as buscas, o que ele faz é procurar pela "string" que você passa para ele dentro de seu banco de dados. Antes de procurarmos qualquer coisa usando ele, precisamos atualizar o banco de dados, para isso usamos o comando updatedb (Seu arquivo de configuração fica em /etc/updatedb.conf).

# Atualize o banco de dados:
$ sudo updatedb

# Pesquise pela string crontab:
$ sudo locate crontab
/usr/bin/crontab
/usr/share/bash-completion/completions/crontab
/usr/share/licenses/crontabs
/usr/share/licenses/crontabs/COPYING
/usr/share/man/man1/crontab.1.gz
/usr/share/man/man1p/crontab.1p.gz
/usr/share/man/man4/crontabs.4.gz
/usr/share/man/man5/anacrontab.5.gz
/usr/share/man/man5/crontab.5.gz
/usr/share/vim/vim80/syntax/crontab.vim


WHEREIS


Busca por binários, libs, fontes, manuais entre outros, vai buscar a string no começo do nome do arquivo.

$ whereis nano
nano: /usr/bin/nano /usr/share/nano /usr/share/man/man1/nano.1.gz /usr/share/info/nano.info.gz
# Traaz informações do binário, manual etc.

$ whereis cp
cp: /usr/bin/cp /usr/share/man/man1/cp.1.gz /usr/share/man/man1p/cp.1p.gz


WHICH


Faz buscas apenas no PATH, normalmente só traz o binário.

$ which nano
/usr/bin/nano

$ which cp
/usr/bin/cp


TYPE


Não é bem para localizar, mas ele informa se o binário é interno do bash ou não.

Veja aqui