RustDriveSync
Sincronização unidirecional de arquivos com Google Drive
RustDriveSync é uma ferramenta CLI desenvolvida em Rust para sincronização eficiente e confiável de arquivos locais com o Google Drive. Projetada para ser leve, rápida e segura.
🎯 Características
Core Features (V1.0)
- ✅ Dependency Injection - Abstrações via traits para múltiplos backends
- ✅ Rate Limiting - Proteção automática contra limites da API (800 req/100s)
- ✅ Retry com Backoff - Recuperação automática de falhas (exponential backoff)
- ✅ Uploads Paralelos - Até 10x mais rápido (configurável)
- ✅ Thread-Safe - Arquitetura async/await com Tokio
- ✅ Sincronização unidirecional (local → Google Drive)
- ✅ Modo único ou monitoramento contínuo (watch mode)
- ✅ Upload com streaming - memória constante para arquivos grandes
- ✅ Autenticação OAuth2 segura
- ✅ Configuração via arquivo TOML
- ✅ Logs detalhados com níveis configuráveis
- ✅ Detecção de mudanças por hash MD5 incremental
- ✅ Detecção automática de MIME types - suporte a 800+ formatos
Qualidade e Arquitetura
- ✅ 113 testes (36.46% cobertura total, >70% em módulos críticos)
- ✅ Documentação completa - ADRs, C4 diagrams, security docs
- ✅ SOLID principles - Clean architecture
- ✅ Zero breaking changes - Código legado continua funcionando
📋 Pré-requisitos
- Rust 1.70 ou superior
- Credenciais OAuth2 do Google Cloud Console
🚀 Instalação
Via Cargo
Build manual
O binário estará em target/release/rustdrivesync
🔧 Configuração Inicial
1. Obter Credenciais do Google
- Acesse o Google Cloud Console
- Crie um novo projeto (ou use um existente)
- Habilite a Google Drive API
- Crie credenciais OAuth 2.0 (Desktop App)
- Baixe o arquivo
credentials.json
2. Criar Configuração
Isso criará um arquivo config.example.toml. Copie-o para config.toml e edite:
Configure pelo menos:
source.path: pasta local a sincronizargoogle_drive.credentials_file: caminho para credentials.jsongoogle_drive.target_folder_idoutarget_folder_name
3. Autenticar
Isso abrirá seu navegador para autorizar o aplicativo.
📖 Uso
Sincronização Única
Monitoramento Contínuo
Simular (Dry Run)
Verificar Status
Listar Arquivos
# Arquivos pendentes
# Arquivos no Google Drive
# Diferenças local vs remoto
📚 Documentação
Para Usuários
- Guia de Uso Completo - Tutorial passo a passo em Português
- Instalação e configuração inicial
- Comandos básicos e avançados
- Exemplos práticos de uso
- Solução de problemas comuns
- Dicas de segurança
Para Desenvolvedores
- Sumário de Arquitetura - Visão executiva da arquitetura
- Documentação Completa de Arquitetura - Índice central
- ADRs - Architecture Decision Records
- Diagramas C4
- Context Diagram - Visão de sistema
- Container Diagram - Componentes internos
- Data Flow - Fluxo de dados
- Atributos de Qualidade - Performance, Segurança, Confiabilidade
- Arquitetura de Segurança - Modelo de ameaças e compliance
API Documentation
# Gerar documentação Rust
⚙️ Configuração
Exemplo de config.toml:
[]
= "info"
[]
= "/home/usuario/documentos"
= true
= true
= ["*.tmp", "node_modules/", ".git/"]
[]
= "./credentials.json"
= "./token.json"
= "1ABC123xyz"
[]
= "watch"
= 300
= "overwrite"
= 100
= 5
Veja config.example.toml para todas as opções disponíveis.
🏗️ Arquitetura
┌─────────────────────────────────────────────────┐
│ RustDriveSync │
├─────────────────────────────────────────────────┤
│ │
│ CLI (clap) → Config → Core Engine │
│ │ │
│ ├─ File Scanner │
│ ├─ Sync Engine │
│ └─ State Manager │
│ │ │
│ ▼ │
│ Google Drive Client │
│ (OAuth2 + Upload) │
│ │
└─────────────────────────────────────────────────┘
🧪 Desenvolvimento
Build
Testes
Linting
Formatação
📝 Roadmap
✅ V1.0 - Production Ready (CONCLUÍDO)
Fundação:
- Estrutura base e CLI ✅
- Sistema de configuração ✅
- Integração com Google Drive ✅
- Sync engine completo ✅
- File watcher (modo watch) ✅
- Streaming de uploads ✅
Qualidade e Performance:
- Dependency Injection com traits ✅
- Rate limiting automático (800 req/100s) ✅
- Retry com exponential backoff ✅
- Uploads paralelos (5-10x speedup) ✅
- 113 testes (>70% cobertura em módulos críticos) ✅
- Documentação completa (ADRs, C4, Security) ✅
🚀 Próximos Passos
V1.1 (Q1 2026) - Melhorias de Segurança e Observabilidade:
- OS Keychain integration (macOS Keychain, Windows Credential Manager, Linux Secret Service)
- Jitter em retry para prevenir thundering herd
- Structured logging (JSON format)
- Prometheus metrics endpoint
- E2E tests com Docker
V1.2 (Q2 2026) - Múltiplos Backends:
- Backend S3 (AWS S3, MinIO, Wasabi)
- Backend Dropbox
- SQLite state (substituir JSON)
- Progress bar melhorado (multi-file)
- Cobertura de testes >50%
V2.0 (Q3-Q4 2026) - Sincronização Avançada:
- Sincronização bidirecional (Drive → Local)
- Resolução automática de conflitos
- End-to-end encryption opcional
- Web dashboard (status, métricas, logs)
- Multi-user support
V3.0 (2027) - Enterprise Features:
- Webhooks para notificações
- API REST para integração
- Suporte a múltiplos clouds simultâneos
- Versionamento de arquivos
- Rollback de mudanças
📋 Veja ROADMAP.md para detalhes completos sobre features planejadas, sprints, e debt técnica. 📄 Veja CHANGELOG.md para histórico detalhado de mudanças.
🤝 Contribuindo
Contribuições são bem-vindas! Por favor:
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
📄 Licença
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
🔗 Links Úteis
🙏 Agradecimentos
- Comunidade Rust
- Mantenedores das crates utilizadas (clap, tokio, yup-oauth2, etc.)
- Contribuidores do projeto
Desenvolvido com ❤️ em Rust