private void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { GravaLog(); if (ErroBackup.Length > 0) { memoBackup.Text = ErroBackup.ToString(); NotifyIconBackup.ShowBalloonTip(0, "Cópia de Segurança", "Falha na cópia de segurança.", ToolTipIcon.Error); MessageBox.Show("Falha na cópia de segurança. Favor verificar a tela a seguir", "Cópia de Segurança", MessageBoxButtons.OK, MessageBoxIcon.Error); StateForm(true); } else { NotifyIconBackup.ShowBalloonTip(0, "Cópia de Segurança", "Cópia de segurança realizada com sucesso.", ToolTipIcon.Info); MessageBox.Show("Cópia de segurança realizada com sucesso.", "Cópia de Segurança", MessageBoxButtons.OK, MessageBoxIcon.Information); this.Close(); } }
private void ExecutarBackup(BackgroundWorker status, DoWorkEventArgs e) { try { NotifyIconBackup.Visible = true; NotifyIconBackup.ShowBalloonTip(0, "Cópia de Segurança", "Processo de cópia de segurança em andamento.", ToolTipIcon.Info); int bkp = 0; string VersaoPostGres = string.Empty; string VersaoBanco = string.Empty; BackupDTO LstBackup = backupbo.GetLastBackup(); BackupDTO BackupResultado = new BackupDTO(); // VERIFICANDO O NÚMERO DO ÚLTIMO BACKUP REALIZADO if (LstBackup.Nomedados != "") { if (LstBackup.Nomedados.Substring(6, 1) == "" || LstBackup.Nomedados.Substring(6, 1) == "5") { bkp = 1; } else { bkp = int.Parse(LstBackup.Nomedados.Substring(6, 1)) + 1; } } else { bkp = 1; } // DADOS DE CONEXÃO PARA O PG_DUMP string[] tags = Global.ConnectionStringPg.Split(';'); //SERVIDOR string[] server = tags[0].Split('='); string Servidor = server[1]; //PORTA string[] port = tags[1].Split('='); string porta = port[1]; //BANCO DE DADOS string[] database = tags[2].Split('='); string BancoDados = database[1]; //USUARIO string[] user = tags[3].Split('='); string usuario = user[1]; //PWD string[] pwd = tags[4].Split('='); string Pwd = pwd[1]; // PEGANDO A VERSÃO DO BANCO DE DADOS try { VersaoBanco = databasestructureBO.GetVersion(); string[] version = VersaoBanco.Split(' '); VersaoPostGres = version[1].Substring(0, 1) + version[1].Substring(2, 1); } catch { } // VERIFICANDO E CRIANDO A PASTA DE ARMAZENAMENTO DO BACKUP if (!Directory.Exists(Global.LocalPath + @"\sistemas\MechTech")) { Directory.CreateDirectory(Global.LocalPath + @"\sistemas\MechTech"); } if (!Directory.Exists(Global.LocalPath + @"\sistemas\MechTech\" + Global.Sistema.ToString())) { Directory.CreateDirectory(Global.LocalPath + @"\sistemas\MechTech\" + Global.Sistema.ToString()); } // NOME DO ARQUIVO DE BACKUP CONFORME A VERSÃO DO POSTGRES if (VersaoPostGres.Substring(0, 1) != "7") { ArqDestino = string.Format(Global.LocalPath + @"\sistemas\MechTech\" + Global.Sistema.ToString() + "\\bkp000" + bkp + ".fc"); } else { ArqDestino = string.Format(Global.LocalPath + @"\sistemas\MechTech\" + Global.Sistema.ToString() + "\\bkp000" + bkp + ".sql"); } // CRIANDO ARQUIVO DE BAT FileInfo arquivo = new FileInfo(Global.LocalPath + @"\sistemas\MechTech\" + Global.Sistema.ToString() + "\\backup.bat"); if (arquivo.Exists) { arquivo.Delete(); } StreamWriter arquivoentrada = new StreamWriter(Global.LocalPath + @"\sistemas\MechTech\" + Global.Sistema.ToString() + "\\backup.bat"); //arquivoentrada.WriteLine("ECHO OFF"); arquivoentrada.WriteLine("@set PGPASSWORD="******"cls"); arquivoentrada.WriteLine("@Echo Processo de backup em execução. Aguarde..."); // ACIONANDO O PG_DUMP CONFORME A VERSÃO DO POSTGRES switch (VersaoPostGres) { case "93": //arquivoentrada.WriteLine("@" + Global.LocalPath + "\\sistemas\\" + Global.Sistema.ToString() + "\\postgres\\93\\pg_dump93.exe -U" + usuario + " -h" + Servidor + " -p" + porta + " -i -v -Fc -f" + ArqDestino + " " + BancoDados + " 2> " + ArqDestino + ".log"); arquivoentrada.WriteLine("@" + Global.LocalPath + "\\sistemas\\" + "MechTech" + "\\postgres\\93\\pg_dump93.exe -U" + usuario + " -h" + Servidor + " -p" + porta + " -i -v -Fc -f" + ArqDestino + " " + BancoDados + " 2> " + ArqDestino + ".log"); break; case "91": arquivoentrada.WriteLine("@" + Global.LocalPath + "\\sistemas\\" + Global.Sistema.ToString() + "\\postgres\\91\\pg_dump91.exe -U" + usuario + " -h" + Servidor + " -p" + porta + " -i -v -Fc -f" + ArqDestino + " " + BancoDados + " 2> " + ArqDestino + ".log"); break; case "90": arquivoentrada.WriteLine("@" + Global.LocalPath + "\\sistemas\\" + Global.Sistema.ToString() + "\\postgres\\90\\pg_dump90.exe -U" + usuario + " -h" + Servidor + " -p" + porta + " -i -v -Fc -f" + ArqDestino + " " + BancoDados + " 2> " + ArqDestino + ".log"); break; case "82": arquivoentrada.WriteLine("@" + Global.LocalPath + "\\sistemas\\" + Global.Sistema.ToString() + "\\postgres\\82\\pg_dump82.exe -U" + usuario + " -h" + Servidor + " -p" + porta + " -i -v -Fc -f" + ArqDestino + " " + BancoDados + " 2> " + ArqDestino + ".log"); break; case "81": arquivoentrada.WriteLine("@" + Global.LocalPath + "\\sistemas\\" + Global.Sistema.ToString() + "\\postgres\\82\\pg_dump81.exe -U" + usuario + " -h" + Servidor + " -p" + porta + " -i -v -Fc -f" + ArqDestino + " " + BancoDados + " 2> " + ArqDestino + ".log"); break; default: if (VersaoPostGres.Substring(0, 1) == "7") { arquivoentrada.WriteLine(Global.LocalPath + @"\\sistemas\\" + Global.Sistema.ToString() + "\\postgres\\82\\pg_dump7.exe -U" + usuario + " -h" + Servidor + " -p" + porta + " -i -v -f" + ArqDestino + " " + BancoDados + " 2> " + ArqDestino + ".log"); } break; } arquivoentrada.Close(); Process backup = new Process(); backup.StartInfo.FileName = Global.LocalPath + @"\sistemas\MechTech\" + Global.Sistema.ToString() + "\\backup.bat"; backup.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; backup.StartInfo.Verb = "Open"; backup.StartInfo.CreateNoWindow = true; backup.Start(); backup.WaitForExit(); if (backup.ExitCode != 0) { arquivo.Delete(); ErroBackup.AppendLine("Falha na execução do Backup."); ErroBackup.AppendLine("Códido de retorno " + backup.ExitCode.ToString() + " recebido."); e.Result = "Código de saída " + backup.ExitCode; return; } arquivo = new FileInfo(Global.LocalPath + @"\sistemas\MechTech\" + Global.Sistema.ToString() + "\\backup.bat"); if (arquivo.Exists) { arquivo.Delete(); } // REGISTRANDO O BACKUP BackupResultado.Data = DateTime.Today; BackupResultado.Hora = new TimeSpan(DateTime.Now.Hour, DateTime.Now.Minute, 0); BackupResultado.Usuario = Global.UsuarioAtivo; BackupResultado.Maquina = Environment.MachineName; BackupResultado.Nomedados = "bkp000" + bkp; if (VersaoPostGres.Substring(0, 1) != "7") { BackupResultado.Nomeempresa = "bkp000" + bkp + ".fc"; } else { BackupResultado.Nomeempresa = "bkp000" + bkp + ".sql"; } FileInfo fi = new FileInfo(ArqDestino); BackupResultado.Tamanho = (int)fi.Length; BackupResultado.Versao = Global.VersaoSistema; BackupResultado.Banco = VersaoBanco.Substring(0, 50); backupbo.Insert(BackupResultado); if (backupbo.MonitoraBackup()) { while (BackupResultado.Versao.IndexOf(".") != -1) { BackupResultado.Versao = BackupResultado.Versao.Remove(BackupResultado.Versao.IndexOf("."), 1); } int filial = backupbo.GetFilialBackup(); //bool RegistroMW = backupbo.InsertMW(BackupResultado, Global.Sistema.ToString(), filial); //if (!RegistroMW) //{ // ErroBackup.AppendLine("Não foi possível registrar a execução do backup na MECHTECH"); // ErroBackup.AppendLine("Verifique se há uma conexão de internet disponível."); //} } } catch (Exception ex) { ErroBackup.AppendLine("Falha na execução do Backup."); ErroBackup.AppendLine(ex.Message); e.Result = ex.Message; } }