示例#1
0
 public static SettingBackupFtp ReadSetting()
 {
     using (var uof = new UnitOfWork())
     {
         var setting = uof.SettingBackupFtpRepository.Find(a => 1 == 1).FirstOrDefault();
         if (setting == null)
         {
             setting = new SettingBackupFtp();
             uof.SettingBackupFtpRepository.Add(setting);
             uof.Commit();
         }
         return(setting);
     }
 }
示例#2
0
        /// <summary>
        /// se ci sono più di x file cancella quelli in eccedenza
        /// </summary>
        private void ClearOldFile(SettingBackupFtp setting)
        {
            if (setting.MaxMbFileInFtp < 30)
            {
                _logger.Warn("Occorre impostare una qta maggiore di mb per il backup, " + setting.MaxMbFileInFtp.ToString() + " sono troppo pochi");
                return;
            }
            using (var ftp = new Ftp.FtpManager())
            {
                if (ftp.ConnessioneOk())
                {
                    while (true)
                    {
                        var listFile = ftp.FileList();
                        if (listFile == null)
                        {
                            _logger.Info("Non si riesce a prelevare la lista dei backup ");
                            return;
                        }
                        var backList = ftp.FileList().Where(a => a.IsDirectory == false && a.Name.Contains("Backup_") &&
                                                            a.Name.EndsWith(".bak")).ToList();
                        var size = ConvertBytesToMegabytes(backList.Sum(a => a.Size));

                        if (size > setting.MaxMbFileInFtp && backList.Count > 1)
                        {
                            var first = listFile.OrderBy(a => a.Name).First();
                            ftp.Delete(first.FullPath);

                            _logger.Info("Cancello file di backup vecchio : " + first.Name);

                            setting.UltimaCancellazioneBackup = DateTime.Now;
                            using (var uof = new UnitOfWork())
                            {
                                uof.SettingBackupFtpRepository.Update(setting);
                                uof.Commit();
                            }
                        }
                        else
                        {
                            return;
                        }
                    }
                }
            }
        }