Lab 3.3 - Busca de Arquivos e Links
Objetivos
Ao final deste lab, você será capaz de:
- Buscar arquivos com find e locate
- Criar links simbólicos
- Criar links duros
- Entender as diferenças entre os tipos de links
- Utilizar links em cenários práticos
Pré-requisitos
- Ubuntu 24.04 instalado
- Terminal aberto
- Acesso de usuário normal
Exercício 1: Busca com find
Etapa 1: Busca Básica
# Criar arquivos de teste
mkdir -p ~/test-search/{docs,scripts,data}
touch ~/test-search/docs/{file1.txt,file2.txt}
touch ~/test-search/scripts/{script1.sh,script2.sh}
touch ~/test-search/data/{data1.csv,data2.csv}
# Buscar por nome
find ~/test-search -name "file1.txt"
# Buscar com wildcards
find ~/test-search -name "*.txt"
# Buscar por tipo
find ~/test-search -type f # Apenas arquivos
find ~/test-search -type d # Apenas diretórios
Etapa 2: Busca Avançada
# Por tamanho
find ~/test-search -size +1M # Mais de 1MB
find ~/test-search -size -1k # Menos de 1KB
# Por data de modificação
find ~/test-search -mtime -1 # Modificados nas últimas 24h
find ~/test-search -mtime +7 # Modificados há mais de 7 dias
# Por permissões
find ~/test-search -perm 755
# Combinações
find ~/test-search -name "*.txt" -mtime -1
Etapa 3: Executar Comandos
# Encontrar e remover (atenção!)
find ~/test-search -name "*.tmp" -delete
# Encontrar e exibir
find ~/test-search -name "*.txt" -exec ls -lh {} \;
# Encontrar e contar
find ~/test-search -type f | wc -l
Exercício 2: locate
Etapa 1: Instalação e Configuração
# Instalar locate
sudo apt update
sudo apt install mlocate
# Atualizar o banco de dados
sudo updatedb
# Buscar
locate file1.txt
# Busca case-insensitive
locate -i file
Etapa 2: Limitar Resultados
# Limitar o número de resultados
locate file | head -10
# Contar
locate file | wc -l
Exercício 3: Links Simbólicos
Etapa 1: Criar Links Simbólicos
# Criar um arquivo
echo "Conteúdo original" > ~/original.txt
# Criar um link simbólico
ln -s ~/original.txt ~/link-simbolico.txt
# Ver o link
ls -l ~/link-simbolico.txt
# Note a seta: link-simbolico.txt -> /home/user/original.txt
# Ler via o link
cat ~/link-simbolico.txt
Etapa 2: Links Simbólicos para Diretórios
# Criar um link para um diretório
ln -s ~/test-search ~/link-diretorio
# Usar o link
ls ~/link-diretorio
cd ~/link-diretorio
Etapa 3: Links Simbólicos Absolutos vs Relativos
cd ~/test-search
# Link absoluto
ln -s /home/$USER/original.txt link-absoluto.txt
# Link relativo
ln -s ../original.txt link-relativo.txt
# Ver a diferença
ls -l link-*.txt
Exercício 4: Links Duros
Etapa 1: Criar Links Duros
# Criar um arquivo
echo "Conteúdo" > ~/arquivo-original.txt
# Criar um link duro
ln ~/arquivo-original.txt ~/link-duro.txt
# Ver os dois arquivos
ls -li ~/arquivo-original.txt ~/link-duro.txt
# Note: mesmo inode (primeiro número)
Etapa 2: Propriedades dos Links Duros
# Modificar via o link duro
echo "Novo conteúdo" >> ~/link-duro.txt
# Ver o arquivo original
cat ~/arquivo-original.txt # Conteúdo modificado!
# Contar os links
ls -l ~/arquivo-original.txt
# O número após as permissões = número de links duros
Etapa 3: Remover um Link Duro
# Remover o arquivo "original"
rm ~/arquivo-original.txt
# O link duro ainda existe!
cat ~/link-duro.txt # Conteúdo ainda está lá
# Verificar os inodes
ls -li ~/link-duro.txt
Exercício 5: Comparação Links Simbólicos vs Duros
Etapa 1: Teste de Remoção
# Criar arquivo, link simbólico e link duro
echo "Test" > test.txt
ln -s test.txt link-sym.txt
ln test.txt link-duro.txt
# Remover o arquivo original
rm test.txt
# Testar o link simbólico
cat link-sym.txt # ❌ Erro: arquivo não encontrado
# Testar o link duro
cat link-duro.txt # ✅ Ainda funciona!
Etapa 2: Limitações dos Links Duros
# Links duros não funcionam para:
# 1. Diretórios
# ln dir1 dir2 # ❌ Erro
# 2. Sistemas de arquivos diferentes
# ln /mnt/external/file.txt ~/link.txt # ❌ Erro se FS diferente
# 3. Links simbólicos podem atravessar FS
ln -s /mnt/external/file.txt ~/link-sym.txt # ✅ Funciona
Exercício 6: Casos de Uso Práticos
Etapa 1: Scripts no PATH
# Criar um script
cat > ~/meu-script.sh << 'EOF'
#!/bin/bash
echo "Script executado!"
EOF
chmod +x ~/meu-script.sh
# Criar um link em um diretório do PATH
sudo ln -s ~/meu-script.sh /usr/local/bin/meu-script
# Usar de qualquer lugar
meu-script
Etapa 2: Versões de Softwares
# Simular versões
mkdir -p ~/app/{v1.0,v2.0}
echo "Versão 1.0" > ~/app/v1.0/app.txt
echo "Versão 2.0" > ~/app/v2.0/app.txt
# Link para versão atual
ln -s ~/app/v2.0 ~/app/current
# Usar
cat ~/app/current/app.txt
# Trocar de versão facilmente
rm ~/app/current
ln -s ~/app/v1.0 ~/app/current
Etapa 3: Configuração
# Arquivo de config no home
echo "config=value" > ~/.myapp-config
# Link a partir de /etc
sudo ln -s ~/.myapp-config /etc/myapp-config
# Usar
cat /etc/myapp-config
Verificação
Checklist
Verifique se você consegue:
- Buscar arquivos com find
- Usar locate para busca rápida
- Criar links simbólicos (ln -s)
- Criar links duros (ln)
- Entender as diferenças entre os dois tipos
- Utilizar links em cenários práticos
Perguntas para Reflexão
-
Quando usar um link simbólico vs um link duro?
- Simbólico: diretórios, arquivos em FS diferentes, versões
- Duro: mesmo FS, backup de segurança
-
Por que links duros compartilham o mesmo inode?
- Eles apontam para os mesmos dados no disco
- O arquivo só é removido quando todos os links são removidos
-
Qual a diferença entre find e locate?
- find: busca em tempo real, mais flexível
- locate: banco de dados pré-indexado, mais rápido mas pode estar desatualizado
Próximos Passos
- Lab 3.4: Prática Completa
- Capítulo 3.6: Busca de Arquivos
- Capítulo 3.7: Links Simbólicos e Duros
Lab criado em: Dezembro 2024 - Testado no Ubuntu 24.04