Um sistema de arquivos simulado completo em C com interface web moderna, responsiva e intuitiva.
- 🖥️ Interface Web Moderna: Interface HTML/CSS/JavaScript responsiva com design profissional
- 🔧 Operações Completas: Criar, ler, deletar, mover, renomear arquivos e diretórios
- 🚀 Alta Performance: Sistema multi-threaded para múltiplas conexões simultâneas
- 🌐 Servidor HTTP: API REST completa com comunicação JSON
- 🛡️ Robusto: Validação de entrada e tratamento de erros abrangente
- 📊 Metadados Completos: Timestamps, permissões, tamanhos e inodes
- 🎨 UX/UI Excelente: Animações, feedback visual e design responsivo
- 🚫 Sem CLI: Interface CLI removida - use apenas a interface web
make clean # Limpa compilações anteriores
make # Compila todo o sistema./web_server_reorganized✅ A interface estará disponível em: http://localhost:8080
./main_reorganizedMostra informações sobre como usar o sistema.
Acesse a interface web e teste todos os comandos, ou use curl:
# Criar diretório
curl -X POST -H "Content-Type: application/json" \
-d '{"command": "create_dir", "args": ["/teste"]}' \
http://localhost:8080/command
# Listar conteúdo
curl -X POST -H "Content-Type: application/json" \
-d '{"command": "list", "args": ["/"]}' \
http://localhost:8080/commandmake all- Compila ambos os programasmake web_server_reorganized- Compila apenas o servidor webmake main_reorganized- Compila apenas o programa informativomake clean- Limpa arquivos compiladosmake test- Testa o servidor webmake docs- Mostra documentação da estrutura
./web_server_reorganized- Inicia o servidor web na porta 8080./main_reorganized- Mostra informações sobre o sistema
- Criar arquivo: Cria novos arquivos no sistema (com ou sem conteúdo de arquivo fonte)
- Ler arquivo: Visualiza o conteúdo dos arquivos (exibido no console do servidor)
- Deletar arquivo: Remove arquivos do sistema com confirmação
- Criar diretório: Cria novos diretórios e subdiretórios
- Listar conteúdo: Mostra arquivos e subdiretórios com metadados completos
- Index nodes (inodes)
- Timestamps (criação, modificação, acesso)
- Permissões (777 para diretórios, 644 para arquivos)
- Tamanhos dos arquivos
- Deletar diretório: Remove diretórios (vazios ou com conteúdo)
- Renomear: Altera nomes de arquivos/diretórios
- Mover: Move arquivos/diretórios entre locais diferentes
- Validação: Sistema robusto de validação de entrada e tratamento de erros
- Multi-threading: Suporte a múltiplas operações simultâneas
- Acesse
http://localhost:8080após executar./web_server_reorganized - Use os formulários no painel esquerdo para executar comandos
- Visualize resultados no painel direito (detalhes no console do servidor)
- Consulte a ajuda clicando no botão "Ajuda"
- Pressione Enter nos campos de texto para executar rapidamente
- Design Responsivo: Funciona em desktop, tablet e mobile
- Feedback Visual: Animações e cores para indicar status
- Validação em Tempo Real: Verificação de campos obrigatórios
- Loading States: Indicadores visuais durante operações
- Modal de Ajuda: Documentação integrada e acessível
/- Diretório raiz/pasta- Pasta na raiz/pasta/arquivo.txt- Arquivo dentro de uma pasta/pasta/subpasta- Subpasta/projeto/src/main.c- Estrutura de projeto complexa
make run STORAGE_BLOCK_SIZE_IN_KB=2 FILESYSTEM_PARTITION_SIZE_IN_MB=20STORAGE_BLOCK_SIZE_IN_KB: 1-4 KB (padrão: 4)FILESYSTEM_PARTITION_SIZE_IN_MB: 10-100 MB (padrão: 10)
├── src/ # Código fonte modularizado
│ ├── main_reorganized.c # Programa informativo
│ ├── web_server_reorganized.c # Servidor web HTTP multi-threaded
│ ├── filesystem/ # Core do sistema de arquivos
│ │ └── partition_core.[c|h] # Gerenciamento de partições
│ ├── storage/ # Camada de armazenamento
│ │ ├── inode_core.[c|h] # Sistema de inodes e metadados
│ │ └── block_storage.[c|h] # Gerenciamento de blocos de dados
│ ├── directory/ # Operações de diretório
│ │ ├── directory_entry.[c|h] # Entradas de diretório
│ │ └── directory_operations.[c|h] # Operações de diretório
│ └── operations/ # Operações de arquivos
│ └── file_operations.[c|h] # Criar, ler, modificar arquivos
├── web/ # Interface web moderna
│ ├── index.html # Página principal responsiva
│ ├── style.css # Estilos modernos com animações
│ └── script.js # Lógica JavaScript com API REST
├── Makefile # Sistema de build automatizado
├── main_reorganized # Executável informativo
├── web_server_reorganized # Executável do servidor web
├── test_web.html # Página de testes da API
└── README.md # Esta documentação
- GCC: Compilador C
- Make: Sistema de build
- pthread: Para threading (servidor web)
- Navegador Web: Para interface (qualquer navegador moderno)
sudo apt update
sudo apt install build-essentialsudo yum groupinstall 'Development Tools'Se a porta estiver ocupada, o servidor mostrará erro. Solução:
sudo lsof -i :8080 # Ver processo usando a porta
kill -9 <PID> # Matar processo se necessário
# ou
sudo fuser -k 8080/tcp # Alternativa para matar processomake clean # Limpa objetos antigos
make # Recompila tudochmod +x web_server_reorganized
chmod +x main_reorganized# Testar se o servidor responde
curl http://localhost:8080
# Verificar logs em tempo real
./web_server_reorganized # Console mostra todas as operações- Interface não carrega: Verifique se o servidor está rodando
- Comandos não funcionam: Verifique console do navegador (F12)
- Respostas lentas: Normal para operações complexas
- Erro 404: Certifique-se de acessar
http://localhost:8080
# Teste completo das funcionalidades
cd /home/mat/workspace/TP02_SO_Sistema_de_Arquivos
# Criar estrutura de teste
curl -X POST -H "Content-Type: application/json" \
-d '{"command": "create_dir", "args": ["/projeto"]}' \
http://localhost:8080/command
curl -X POST -H "Content-Type: application/json" \
-d '{"command": "create_file", "args": ["/projeto/README.md"]}' \
http://localhost:8080/command
# Listar estrutura
curl -X POST -H "Content-Type: application/json" \
-d '{"command": "list", "args": ["/projeto"]}' \
http://localhost:8080/command- Design Moderno: Gradientes, sombras e animações suaves
- Responsivo: Compatível com dispositivos móveis e desktop
- Feedback Imediato: Indicadores visuais para loading e resultados
- Acessibilidade: Navegação por teclado e modal de ajuda
- Performance: Interface rápida com comunicação assíncrona
- Multi-threading: Suporte a conexões simultâneas
- Memória Eficiente: Gestão otimizada de recursos
- Sistema de Inodes: Metadados completos e organizados
- Validação Robusta: Tratamento abrangente de erros
POST http://localhost:8080/command
Content-Type: application/json
{
"command": "nome_do_comando",
"args": ["argumento1", "argumento2"]
}| Comando | Argumentos | Descrição | Exemplo |
|---|---|---|---|
create_dir |
[caminho] |
Cria diretório | ["/nova_pasta"] |
create_file |
[destino, fonte?] |
Cria arquivo | ["/arquivo.txt", "/tmp/fonte.txt"] |
list |
[caminho] |
Lista conteúdo | ["/"] |
read_file |
[caminho] |
Lê arquivo | ["/arquivo.txt"] |
rename |
[atual, novo] |
Renomeia item | ["/old.txt", "new.txt"] |
move |
[origem, destino] |
Move item | ["/file.txt", "/pasta/"] |
delete |
[caminho] |
Deleta item | ["/arquivo.txt"] |
{
"success": true,
"output": "✅ Operação realizada com sucesso"
}Este é um projeto acadêmico. Para melhorias:
- Fork o projeto
- Crie uma branch (
git checkout -b feature/nova-funcionalidade) - Commit suas mudanças (
git commit -am 'Adiciona nova funcionalidade') - Push para a branch (
git push origin feature/nova-funcionalidade) - Abra um Pull Request
Este projeto é para fins educacionais.
🎓 Projeto Acadêmico - Sistema Operacional
Sistema de Arquivos Simulado com Interface Web
- ✅ Sistema de Arquivos Completo: Inodes, blocos, metadados
- ✅ Interface Web Profissional: Design moderno e responsivo
- ✅ API REST Robusta: Comunicação JSON com validação
- ✅ Multi-threading: Servidor HTTP com suporte a múltiplas conexões
- ✅ Operações Completas: Todas as funcionalidades de um sistema de arquivos
- ✅ Tratamento de Erros: Validação abrangente e mensagens informativas
- ✅ Documentação Completa: README detalhado e ajuda integrada
CONCLUÍDO ✅ - Todas as funcionalidades implementadas e testadas
Desenvolvido como trabalho prático da disciplina de Sistemas Operacionais