Trabalhando com Diretórios e Sistemas de Arquivos
Nesta etapa, exploraremos como usar o comando stat com diretórios e sistemas de arquivos. Esse conhecimento é valioso para tarefas de administração do sistema e para entender o uso do armazenamento.
Comando Stat com Diretórios
O comando stat funciona com diretórios da mesma forma que funciona com arquivos. Vamos criar um diretório de teste e examinar seus metadados:
mkdir -p ~/project/test_dir
stat ~/project/test_dir
Você deve ver uma saída semelhante à que vimos para arquivos, mas com "directory" (diretório) em vez de "regular file" (arquivo regular) no campo tipo de arquivo.
A principal diferença entre arquivos e diretórios é que os diretórios normalmente têm mais links (um para cada subdiretório imediato, mais dois para o próprio diretório e seu pai).
Vamos criar um subdiretório e ver como isso afeta a contagem de links:
mkdir -p ~/project/test_dir/sub_dir
stat ~/project/test_dir
Você deve notar que a contagem de links aumentou em 1.
O comando stat também pode fornecer informações sobre sistemas de arquivos usando a opção -f ou --file-system. Essa opção mostra detalhes como o tipo de sistema de arquivos, tamanho do bloco e estatísticas de uso.
Vamos examinar o sistema de arquivos que contém nosso diretório de projeto:
stat -f ~/project
A saída deve incluir:
- Tipo de sistema de arquivos
- Tamanho do bloco
- Blocos totais
- Blocos livres
- Blocos disponíveis (para usuários não root)
- Inodes totais
- Inodes livres
Essas informações são úteis para monitorar o uso do espaço em disco e planejar a capacidade.
Combinando Opções
Podemos combinar a opção do sistema de arquivos com a opção de formato personalizado para extrair informações específicas:
stat -f -c 'File System: %T\nTotal size: %b blocks\nFree: %f blocks\nAvailable: %a blocks' ~/project
Este comando exibe o tipo de sistema de arquivos, blocos totais, blocos livres e blocos disponíveis.
Seguindo Links Simbólicos
Por padrão, quando o comando stat encontra um link simbólico, ele mostra informações sobre o próprio link, não sobre o arquivo ao qual ele aponta. Vamos criar um link simbólico e ver isso em ação:
echo "Target file content" > ~/project/target_file.txt
ln -s ~/project/target_file.txt ~/project/symlink.txt
stat ~/project/symlink.txt
A saída deve mostrar que o tipo de arquivo é "symbolic link" (link simbólico) e o tamanho é o comprimento do caminho para o arquivo de destino.
Para ver informações sobre o arquivo de destino em vez do link, use a opção -L ou --dereference:
stat -L ~/project/symlink.txt
Agora, a saída deve mostrar informações sobre o arquivo de destino, incluindo seu tamanho e tipo como "regular file" (arquivo regular).
Aplicação Prática: Encontrando Diretórios Grandes
Uma aplicação prática do comando stat é encontrar diretórios grandes. Vamos criar um script que calcula os tamanhos dos diretórios:
echo '#!/bin/bash
for dir in "$@"; do
if [ -d "$dir" ]; then
size=$(du -s "$dir" | cut -f1)
echo "Directory: $dir, Size: $size KB"
else
echo "$dir is not a directory"
fi
done' > ~/project/dir_size.sh
chmod +x ~/project/dir_size.sh
Agora, vamos executar o script em nosso diretório de teste:
~/project/dir_size.sh ~/project/test_dir
Este script usa o comando du para calcular os tamanhos dos diretórios, complementando as informações de metadados fornecidas pelo comando stat.
Ao entender como usar o comando stat com diretórios e sistemas de arquivos, você pode obter informações valiosas sobre a organização e o uso do armazenamento do seu sistema Linux.