46 lines
1.2 KiB
PHP

<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
class BackupCron extends Command
{
protected $signature = 'backup:cron';
protected $description = 'Respaldo automático de la base de datos';
/**
* Ejecutar comando
*/
public function handle()
{
$filename = 'backup-' . date('Y-m-d_H-i-s') . '.sql';
$containerPath = '/tmp/' . $filename;
$hostPath = storage_path('app/backup/' . $filename);
// Crear backup dentro del contenedor MySQL
$dumpCommand = sprintf(
'docker exec repuve-backend-v1-mysql-1 sh -c "mysqldump --no-tablespaces -u%s -p%s %s > %s"',
env('DB_USERNAME'),
env('DB_PASSWORD'),
env('DB_DATABASE'),
$containerPath
);
exec($dumpCommand, $output, $returnCode);
// Copiar del contenedor al host
$copyCommand = sprintf(
'docker cp repuve-backend-v1-mysql-1:%s %s',
$containerPath,
$hostPath
);
exec($copyCommand);
// Limpiar archivo temporal del contenedor
exec("docker exec repuve-backend-v1-mysql-1 rm " . $containerPath);
$this->info('Backup creado: ' . $filename);
}
}