Nós-i e metadados#
O que são metadados?#
Metadados são informações que descrevem um objeto, em vez de constituírem o próprio conteúdo desse objeto. No contexto de um sistema de arquivos Linux, os metadados permitem que o sistema operacional identifique um arquivo, controle seu acesso e gerencie seu armazenamento. Entre os metadados, os mais comuns estão listados na Tabela 1.
Metadado |
Significado |
|---|---|
Tipo de arquivo |
Indica se é arquivo regular, diretório, link simbólico ou outro tipo de objeto. |
UID |
Identificador numérico do usuário proprietário. |
GID |
Identificador numérico do grupo proprietário. |
Modo de acesso |
Permissões de leitura, escrita e execução, além de bits especiais. |
Tamanho |
Quantidade de bytes do conteúdo lógico do arquivo. |
Número de links físicos |
Quantos nomes de diretório apontam para o mesmo inode. |
Timestamps |
Datas e horários associados a eventos no arquivo. |
Referências ao armazenamento |
Informações utilizadas pelo sistema de arquivos para localizar os dados. |
É importante distinguir os metadados do conteúdo. Por exemplo, alterar o proprietário de um arquivo não exige, em condições normais, modificar os bytes do documento armazenado. O que muda é a informação de propriedade mantida pelo sistema de arquivos.
O que é um inode?#
Em sistemas de arquivos Unix e Linux que utilizam inodes, ou nós-i, um inode é uma estrutura de dados que representa um objeto do sistema de arquivos e armazena seus metadados, além de informações necessárias para localizar seu conteúdo.
O inode normalmente contém informações como:
Tipo do objeto.
Permissões e bits de modo.
UID do proprietário.
GID do grupo proprietário.
Tamanho lógico.
Timestamps.
Contagem de links físicos.
Referências aos blocos de dados ou outras estruturas usadas para localizar o conteúdo.
O inode não armazena, em geral, o nome do arquivo. Os nomes ficam nas entradas dos diretórios, que associam nomes a números de inode. A entrada do diretório associa um nome ao inode, que contém metadados e referências aos dados, conforme ilustrado na Figura 1. O número 4821 é apenas ilustrativo. Os números reais dependem do sistema de arquivos e do volume em que o arquivo está armazenado.
Figura 1 Representação do nome de um arquivo associado a um inode#
Nome do arquivo e inode são coisas diferentes#
Considere os comandos:
touch relatorio.txt
ln relatorio.txt relatorio-copia.txt
ls -li relatorio.txt relatorio-copia.txt
O comando touch cria o arquivo vazio se ele ainda não existir. O comando ln, sem opções, cria um link físico (hard link).
Uma saída possível seria:
123456 -rw-r--r-- 2 ana professores 0 Oct 19 20:00 relatorio.txt
123456 -rw-r--r-- 2 ana professores 0 Oct 19 20:00 relatorio-copia.txt
Observe os campos:
123456: número do inode, igual nas duas entradas.2: quantidade de links físicos.ana: usuário proprietário.professores: grupo proprietário.0: tamanho do arquivo em bytes.
Como os dois nomes apontam para o mesmo inode, eles representam o mesmo objeto do sistema de arquivos. Alterar o conteúdo ou as permissões por um dos nomes afeta o objeto acessível pelo outro nome também.
Isso é diferente de criar uma cópia independente com cp, que normalmente produz um novo arquivo com seu próprio inode.
Atenção: inodes são identificados dentro de um sistema de arquivos. Para identificar um objeto de forma mais precisa, considere o par formado pelo dispositivo ou sistema de arquivos e pelo número do inode.
Como consultar o inode e os metadados#
O comando ls -i exibe o número do inode:
ls -i relatorio.txt
Para consultar um conjunto mais completo de metadados, use stat:
stat relatorio.txt
Uma saída típica inclui informações como:
File: relatorio.txt
Size: 0
Inode: 123456
Links: 2
Access: (0644/-rw-r--r--)
Uid: (1000/ana)
Gid: (1001/professores)
Access: 2026-10-19 20:00:00
Modify: 2026-10-19 20:00:00
Change: 2026-10-19 20:00:00
Birth: 2026-10-19 20:00:00
Os valores são ilustrativos. A disponibilidade do campo Birth depende do sistema de arquivos e do suporte do sistema.
É útil diferenciar três timestamps:
atime — access time: relacionado ao último acesso ao conteúdo.
mtime — modification time: relacionado à última modificação do conteúdo.
ctime — status change time: relacionado à última alteração do estado do inode, como permissões, propriedade ou tamanho.
O ctime não significa necessariamente creation time. A data de criação, quando disponível, é uma informação distinta.