Laravel

Comando de backup Laravel

A
Admin

🎯 Comando Criado: backup:system

📍 Localização:

app/Console/Commands/BackupSystem.php

🚀 Como Usar

Backup completo (padrão):

php artisan backup:system

Opções disponíveis:

Apenas banco de dados

php artisan backup:system --no-storage

Apenas storage

php artisan backup:system --no-db

Manter backups por 30 dias (padrão é 7)

php artisan backup:system --keep-days=30

Caminho customizado

php artisan backup:system --path=/caminho/personalizado

Combinando opções

php artisan backup:system --keep-days=15 --path=/mnt/backups

⚙️ Configuração (.env)

Adicione no .env (opcional):

Caminho padrão para salvar backups (opcional, padrão: storage/backups)

BACKUP_PATH=/caminho/para/backups

🎁 Recursos Implementados

✅ Totalmente Genérico - Usa configurações do Laravel (database.php e .env)

✅ Compactação Máxima - Usa 7z com nível 9 (fallback para tar.gz)

✅ Auto-detecta 7z - Se não tiver 7z, usa tar.gz automaticamente

✅ Backup do Banco - Suporta MySQL/MariaDB via mysqldump

✅ Backup do Storage - Compacta toda pasta storage (exclui backups e temp)

✅ Limpeza Automática - Remove backups antigos (configurável)

✅ Nome Dinâmico - Usa APP_NAME + timestamp

✅ Progresso Visual - Mostra emojis e informações detalhadas

✅ Tratamento de Erros - Valida cada etapa

📦 Formato do Arquivo

O backup final terá o formato: {app_name}backup{YYYY-MM-DD_HHmmss}.7z

Exemplo: organizeme_backup_2026-01-11_143052.7z

🔧 Instalar 7z (se necessário)

Ubuntu/Debian:

sudo apt-get install p7zip-full

Windows:

# Baixar de: https://www.7-zip.org/
# Ou via chocolatey:
choco install 7zip

⏰ Automatizar com Cron

Adicionar no app/Console/Kernel.php:

protected function schedule(Schedule $schedule)
{
    // Backup diário às 2h da manhã
    $schedule->command('backup:system')->dailyAt('02:00');

    // Ou backup a cada 6 horas
    $schedule->command('backup:system')->everySixHours();
}

Ou usar crontab diretamente: crontab -e

# Adicionar:
0 2 * * * cd /caminho/projeto && php artisan backup:system >> /dev/null 2>&1

🔄 Reutilizar em Outros Projetos

Basta copiar o arquivo:

cp app/Console/Commands/BackupSystem.php /outro-projeto/app/Console/Commands/

O comando é 100% genérico e funcionará em qualquer projeto Laravel!

📊 Exemplo de Saída

🚀 Iniciando backup do sistema... Timestamp: 2026-01-11_143052 ✅ Usando 7z para compactação máxima 📦 Iniciando backup do banco de dados... └─ Tamanho: 2.45 MB ✅ Backup do banco de dados concluído 📦 Iniciando backup do storage... └─ Tamanho: 15.32 MB ✅ Backup do storage concluído 📦 Criando backup final... ✅ Backup final criado: organizeme_backup_2026-01-11_143052.7z

📊 Informações do Backup: └─ Arquivo: organizeme_backup_2026-01-11_143052.7z └─ Tamanho: 4.23 MB └─ Caminho: /var/www/storage/backups/organizeme_backup_2026-01-11_143052.7z 🧹 Limpando backups com mais de 7 dias... └─ 2 backup(s) antigo(s) removido(s) 🎉 Backup concluído com sucesso!

Está tudo pronto! Quer que eu teste o comando agora


Comentários (0)

Seja o primeiro a comentar!

Deixe seu comentário