public FTP.FtpConnectionInfo ReadFTPFromXML() { xmlDoc.Load(pathXML + @"\XMLDatabase.xml"); XmlNodeList xnList = xmlDoc.SelectNodes("/Schedule/Destination/FTP"); FTP.FtpConnectionInfo ftpCon = new FTP.FtpConnectionInfo(); foreach (XmlNode xn in xnList) { ftpCon.Host = xn["Host"].InnerText; ftpCon.Username = xn["User"].InnerText; ftpCon.Password = xn["Password"].InnerText; } return(ftpCon); }
public void Start() { running = true; while (running) { List <Database> list = ReadFromXML(); foreach (Database d in list) { ConnectionData connectionData = new ConnectionData(d.ConnectionString); var builder = new System.Data.SqlClient.SqlConnectionStringBuilder(d.ConnectionString); string database = builder.InitialCatalog; BackupManager backupManager = new BackupManager(connectionData); string lastRunResult = string.Empty; using (var connection = JobStorage.Current.GetConnection()) { var recurringJobs = connection.GetRecurringJobs(); if (recurringJobs.Count == 0) { RecurringJob.AddOrUpdate(database, () => BackupM.BackupDB(connectionData, database), d.Cronos); } else { var job = recurringJobs.FirstOrDefault(p => p.Id.Equals(database)); if (job != null) { try { if (job.LastJobId != null) { var jobState = connection.GetStateData(job.LastJobId); lastRunResult = jobState.Name; if ((!job.Cron.Equals(d.Cronos)) || (lastRunResult.Equals("Failed")) || (lastRunResult.Equals("Expired"))) { RecurringJob.AddOrUpdate(database, () => BackupM.BackupDB(connectionData, database), d.Cronos); } } } catch (Exception e) { Log.Error("Eroor job", e.Message); } } else { RecurringJob.AddOrUpdate(database, () => BackupM.BackupDB(connectionData, database), d.Cronos); } } } } FTP.FtpConnectionInfo ftpCon = ReadFTPFromXML(); FTP.FTPClient fTPClient = new FTP.FTPClient(ftpCon.Host, ftpCon.Username, ftpCon.Password); foreach (var p in BackupM.dict) { fTPClient.UploadFile(p.Value); } } }