コード例 #1
0
        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);
        }
コード例 #2
0
        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);
                }
            }
        }