Navegando pelo Sistema de Arquivos com Confiança


Artigo 2 — Navegando pelo Sistema de Arquivos com Confiança

Módulo 1 · Fundamentos do Terminal e Linux Prof. Ricardo Matos — Dominando DevOps & Cloud em 1 Ano


A Árvore que Sustenta Tudo

No artigo anterior foram apresentados os primeiros movimentos no terminal. Agora é preciso entender o terreno onde esses movimentos acontecem.

O Linux organiza todos os arquivos em uma única árvore de diretórios que começa em / — chamado de diretório raiz. Não existe C:\ ou D:\ como no Windows. Tudo — arquivos do sistema, configurações, dispositivos de hardware, discos externos — está dentro dessa árvore.

Compreender essa estrutura é essencial. Ao configurar um servidor, depurar um container ou escrever um script de automação, será necessário saber exatamente onde estão os arquivos que importam.


O Mapa do Sistema

ls /
bin  boot  dev  etc  home  lib  media  mnt  opt  proc  root  run  srv  sys  tmp  usr  var

Cada diretório tem uma função específica. Os mais relevantes para o trabalho em DevOps:

/etc — Configurações do sistema

É onde vivem os arquivos de configuração de praticamente todo serviço do Linux. Nginx, SSH, DNS, usuários — tudo passa pelo /etc.

cat /etc/hostname        # Nome da máquina
cat /etc/hosts           # Mapeamento local de nomes para IPs
cat /etc/os-release      # Informações sobre a distribuição Linux

/var — Dados variáveis

Logs, filas, bancos de dados locais — arquivos que crescem com o tempo. Quando um sistema apresenta comportamento inesperado, /var/log é um dos primeiros lugares a se investigar.

ls /var/log

/home — Diretórios dos usuários

Cada usuário tem seu espaço em /home/nome-do-usuario. É onde ficam arquivos pessoais, configurações de shell e chaves SSH.

/tmp — Arquivos temporários

O sistema limpa este diretório automaticamente em reinicializações. Útil para arquivos de trabalho que não precisam persistir.

/usr — Programas e bibliotecas

A maioria dos programas instalados fica em /usr/bin. Bibliotecas em /usr/lib.

/proc e /sys — O sistema em tempo real

Não são diretórios reais no disco — são interfaces para o kernel. Informações do sistema podem ser lidas como se fossem arquivos comuns:

cat /proc/cpuinfo      # Informações sobre o processador
cat /proc/meminfo      # Uso de memória

Caminhos Absolutos e Relativos

Todo arquivo no Linux possui um caminho absoluto — que começa em / e descreve a localização completa:

/home/usuario/devops-curso/modulo01/anotacoes.txt

E um caminho relativo — que parte do diretório atual:

# Estando em /home/usuario
cd devops-curso/modulo01
cat anotacoes.txt

Atalhos essenciais:

.       # O diretório atual
..      # O diretório pai
~       # O home do usuário
-       # O diretório anterior

Buscando Arquivos

Quando não se sabe onde um arquivo está, usa-se find:

# Por nome
find / -name "nginx.conf" 2>/dev/null

# Por extensão dentro de um diretório
find /etc -name "*.conf"

# Modificados nas últimas 24 horas
find /var/log -mtime -1

O 2>/dev/null descarta mensagens de erro de permissão que poluiriam a saída.

Para buscas mais rápidas por nome:

locate nginx.conf

# Atualizar o índice antes, se necessário
sudo updatedb

Entendendo o sudo

O sudosuperuser do — executa um comando com privilégios de administrador.

sudo ls /root

O diretório /root é o home do superusuário e não é acessível por usuários comuns. Com sudo, elevam-se privilégios apenas para aquele comando específico.

Executar tudo como root o tempo todo é uma prática perigosa. O princípio do mínimo privilégio — elevar apenas o necessário, apenas quando necessário — reaparecerá quando forem abordados IAM na AWS e RBAC no Kubernetes.


Inspecionando Arquivos sem Abrir um Editor

head /var/log/syslog        # Primeiras 10 linhas
tail /var/log/syslog        # Últimas 10 linhas
tail -f /var/log/syslog     # Acompanha em tempo real
wc -l /var/log/syslog       # Conta linhas
grep "error" /var/log/syslog          # Filtra por palavra
grep -i "error" /var/log/syslog       # Sem diferenciar maiúsculas

O tail -f é um dos comandos mais usados em produção. Quando algo está errado em um servidor, abre-se o log com tail -f e observa-se o que acontece em tempo real.


Um Exercício Completo

# Cria estrutura de um projeto fictício
mkdir -p ~/devops-curso/modulo01/exercicios
cd ~/devops-curso/modulo01/exercicios

# Confirma onde está
pwd

# Cria logs fictícios
echo "INFO: sistema iniciado" > app.log
echo "ERROR: falha na conexão com o banco" >> app.log
echo "INFO: tentativa de reconexão" >> app.log
echo "INFO: conexão restabelecida" >> app.log

# Filtra apenas erros
grep "ERROR" app.log

# Conta linhas
wc -l app.log

# Verifica metadados do arquivo
ls -la app.log

Saída esperada do grep:

ERROR: falha na conexão com o banco

Saída do wc -l:

4 app.log

É exatamente assim que se investiga um problema em um servidor real — sem interface gráfica, sem mouse, apenas comandos e lógica.


O Que Vem a Seguir

No próximo artigo será abordado um tema que confunde muita gente e causa problemas sérios quando ignorado: permissões de arquivos e usuários no Linux. Será explicado o que significa aquele rwxr-xr-x que aparece no ls -la e como controlar quem pode fazer o quê no sistema.


Referências para Aprofundamento

Documentação e leitura

Prática

Referência rápida


Artigo 2 de 52 · Módulo 1 — Fundamentos do Terminal e Linux Prof. Ricardo Matos · Série Dominando DevOps & Cloud em 1 Ano