#!/usr/bin/php -q isManual) { /* * Apaga arquivos de backup setados manualmete. */ ApagaBkp($conn); /* * Apaga arquivos de backup expirados. */ ApagaBkpTmp($conn); } /* * Carrega as configura??es do banco de dados. */ $config = GetConfiguracoes($bkpConfig->isManual); $bkpConfig->setBackupConfig($config); foreach ($bkpConfig->getConfig() as $configId => $bkpData) { $bkpRealizado = 0; $arConfig = $bkpData['config']; $configAgd = $bkpData['agenda']; /* * Verifica se existe agendamento para o horario atual ou dia da semana. */ $agenda = $arConfig["frq_id"] == BKP_FREQ_DIARIO ? $horaAtual : $diaSemana; $existeBackup = VerificaBkpReg($configId, $dataAtualBD, $agenda); $taNaHora = in_array($agenda, $configAgd); if (($taNaHora && $bkpConfig->isManual) || $debug) { $bkpInfo = array(); $bkp = null; /** @var AbstractBackup $backupHandler */ $backupHandler = null; try { /* * Inicializa agendamento. */ BackupConfig::log(sprintf("Executando backup da configuração [%s]", $arConfig['cfg_descricao'])); $configs = $bkpData['destino']; $tipoBkp = (int) $arConfig["tp_id"]; $tpAudio = (int) BKP_TIPO_AUDIO; $protoRede = $arConfig["prt_id"] == PROTO_REDE; $bkpInfo = array("cfg_id" => $configId, "cfg_descricao" => $arConfig['cfg_descricao'], "size_bkp" => 0, "tp_id" => $tipoBkp, "data" => substr($dataAtualServer, 0, 10), "hora" => $agenda, "dir" => $arConfig['dst_diretorio']); $backupHandler = $bkpConfig->determineHandler($configs['proto']); /* * A fun??o "GetConfiguracoes" alimenta a vari?vel global "$configDestino" com * as informa??es necess?rias para se conectar ao destino do backup e que ? usada * para inicializar o objto $bkp que cont?m os metodos para transferencia dos arqui_ * vos. */ $bkp = new BackupInfo($configs, $backupHandler); if (!$bkp->connect()) { $msg = $bkp->GetMessage(); // throw new Exception($bkp->GetLastHandlerException()); Excpt($bkp->GetLastHandlerException(), get_class($backupHandler) . "::connect()"); } /* * Empacota os arquivos para o bakcup. */ $bkpFile = GetBkpFiles($configId, $agenda, $arConfig["tp_id"], $bkpConfig); if (is_array($bkpFile) && count($bkpFile)) { $dirBkp = $backupHandler->Pwd(!$protoRede); $dirAtu = $dirBkp; if ($tipoBkp == $tpAudio) { $dir = "bk_audio-" . substr($dataAtualServer, 0, 10); $dirAtu = $backupHandler->Pwd() . $dir; /* * Se o diret?rio de ?udio n?o existe tenta cria-lo. */ if (!$backupHandler->Chdir($dirAtu)) { if (!$backupHandler->Mkdir($dirAtu)) { Excpt($bkp->GetMessage(), get_class($backupHandler) . "::Mkdir()"); } /* * Tenta acessar o diret?rio recem criado. */ if (!$backupHandler->Chdir($dirAtu)) { Excpt($bkp->GetMessage(), get_class($backupHandler) . "::Chdir()"); } } } $statusFile = array(); /* * Não faz upload para audio quando o backup ? manual * pelo fato dos arquivos permanecerem no diret?rio de * origm. */ $somaSize = 0; foreach ($bkpFile as $arquivo => $dadosArquivo) { $size = filesize($dadosArquivo['file']); $upload = $backupHandler->Upload($dadosArquivo, $arquivo); if (!$upload) { Excpt($bkp->GetMessage(), get_class($backupHandler) . "::Upload('" . implode("', '", array($dadosArquivo['file'], $arquivo)) . "')"); } $statusFile[$arquivo] = array("origem" => $dadosArquivo['file'], "destino" => $dirAtu, "log" => $upload ? "ok" : "erro", "size" => $size, 'hash' => $dadosArquivo['hash']); $somaSize += $size; } /* * Compleata informa??es para registro do backup. */ $bkpInfo['size_bkp'] = $somaSize; $bkpInfo['dir'] = $dirAtu; /* * Registra o backup no banco de dados. */ RegistraBkp($conn, $bkpInfo, $statusFile); } unset($backupHandler); } catch (Exception $e) { $erroBackup = $e; RegistraBkp($conn, $bkpInfo, null, GetErroBkp($bkp, $e->getMessage())); $log = sprintf("Backup [%s - %s] finalizado com erro!", $configId, $arConfig['cfg_descricao']); BackupConfig::log($log); if (!is_null($backupHandler) && is_object($backupHandler)) { unset($backupHandler); } } } } } catch (Exception $e) { $erroBackup = $e; } $msg = "Backup efetuado com sucesso!"; if ($bkpConfig->getCountBackups()) { if (!is_null($erroBackup)) { $msg = "Backup efetuado com erro: " . $erroBackup->getMessage(); } } else { $msg = "Backup efetuado com sucesso, porém não existem arquivos para realizar backup."; } BackupConfig::log($msg); echo $msg; /* * Libera a execucao do scrit. */ //print_r($bkpConfig); unset($bkpConfig);