# Configurar Cron para Backup Automático

## Problema
O backup automático está configurado no código, mas não está sendo executado porque o Laravel Scheduler precisa de um cron job para funcionar.

## Solução

### 1. Verificar se o Cron já está configurado

Execute no servidor:

```bash
crontab -l
```

Se você ver uma linha como:
```
* * * * * cd /var/www/gestorstream/backend && php artisan schedule:run >> /dev/null 2>&1
```

Então o cron já está configurado. Se não, continue com os passos abaixo.

### 2. Configurar o Cron

Execute no servidor como usuário que executa o PHP (geralmente `www-data` ou o usuário do servidor):

```bash
# Editar crontab
sudo crontab -e -u www-data

# Ou se for root:
crontab -e
```

Adicione a seguinte linha:

```bash
* * * * * cd /var/www/gestorstream/backend && php artisan schedule:run >> /dev/null 2>&1
```

Isso fará com que o Laravel verifique o scheduler a cada minuto e execute os comandos agendados quando necessário.

### 3. Verificar se está funcionando

Após configurar o cron, aguarde alguns minutos e verifique os logs:

```bash
cd /var/www/gestorstream/backend

# Ver logs do Laravel
tail -f storage/logs/laravel.log | grep -i backup

# Ou verificar se o comando está sendo executado
php artisan schedule:list
```

### 4. Testar manualmente

Para testar se o backup automático funciona:

```bash
cd /var/www/gestorstream/backend

# Executar o comando manualmente
php artisan database:auto-backup
```

Se funcionar, o problema era apenas o cron não estar configurado.

### 5. Verificar configurações

Certifique-se de que as configurações estão corretas na interface:

1. Acesse `/admin/settings` → Aba "Geral" → Seção "Backup e Migração"
2. Verifique:
   - ✅ Backup automático está **habilitado**
   - ✅ Frequência está configurada (diário, semanal ou mensal)
   - ✅ Horário está configurado

### 6. Verificar permissões

Certifique-se de que o usuário do cron tem permissão para:
- Executar `php artisan`
- Escrever no diretório de backups
- Acessar o banco de dados

```bash
# Verificar permissões do diretório de backups
ls -la /var/www/gestorstream/backend/storage/app/backups/

# Se necessário, corrigir permissões
sudo chown -R www-data:www-data /var/www/gestorstream/backend/storage
sudo chmod -R 775 /var/www/gestorstream/backend/storage
```

## Comando Cron Completo (Recomendado)

Para melhor controle e logging, use:

```bash
* * * * * cd /var/www/gestorstream/backend && /usr/bin/php artisan schedule:run >> /var/www/gestorstream/backend/storage/logs/scheduler.log 2>&1
```

Isso criará um log em `storage/logs/scheduler.log` para debug.

## Verificar Status do Scheduler

```bash
cd /var/www/gestorstream/backend

# Listar todos os comandos agendados
php artisan schedule:list

# Verificar se o scheduler está rodando
php artisan schedule:test
```

## Troubleshooting

### O cron não está executando

1. Verificar se o cron está rodando:
```bash
sudo systemctl status cron
# ou
sudo service cron status
```

2. Verificar logs do cron:
```bash
sudo tail -f /var/log/syslog | grep CRON
```

3. Testar o comando diretamente:
```bash
cd /var/www/gestorstream/backend
php artisan schedule:run
```

### O backup não está sendo criado

1. Verificar se está habilitado:
```bash
php artisan tinker
>>> \App\Models\SystemSetting::get('auto_backup_enabled')
```

2. Verificar logs:
```bash
tail -f storage/logs/laravel.log | grep -i backup
```

3. Executar manualmente para ver erros:
```bash
php artisan database:auto-backup -v
```

## Nota Importante

O Laravel Scheduler precisa rodar **a cada minuto** via cron. O scheduler então verifica internamente quais comandos devem ser executados baseado na frequência e horário configurados.

