Пример #1
0
        private void Created(object sender, FileSystemEventArgs e)
        {
            string   pathToFile = e.FullPath;
            DateTime date       = File.GetLastWriteTime(pathToFile);
            string   name       = Path.GetFileNameWithoutExtension(pathToFile);
            string   extansion  = Path.GetExtension(pathToFile);

            EncryptionOptions encryptionOptions =
                optionsManager.GetOptions <EncryptionOptions>() as EncryptionOptions;
            ArchivationOptions archivationOptions =
                optionsManager.GetOptions <ArchivationOptions>() as ArchivationOptions;


            if (extansion != ".gz" && extansion != "")
            {
                byte[] key, iv;
                (key, iv) = Encryption.GenKeyIv();

                if (encryptionOptions.NeedToEncrypt)
                {
                    File.WriteAllBytes(pathToFile, Encryption.Encrypt(pathToFile, key, iv));
                }

                string pathToArchive = Path.Combine(source, name + ".gz");
                Archivation.Compress(pathToFile, pathToArchive, archivationOptions);


                File.Delete(pathToFile);

                if (!Directory.Exists(saveArchive))
                {
                    Directory.CreateDirectory(saveArchive);
                }

                string newPathToArchive = Path.Combine(saveArchive, name + ".gz");
                if (File.Exists(newPathToArchive))
                {
                    File.Delete(newPathToArchive);
                }
                File.Move(pathToArchive, newPathToArchive);


                string newPathToFile = Path.Combine(target, date.Year.ToString(),
                                                    date.Month.ToString(), date.Day.ToString());
                Directory.CreateDirectory(newPathToFile);

                newPathToFile = Path.Combine(newPathToFile, name + "_"
                                             + DateTime.Now.ToString("yyyy_MM_dd_hh_mm_ss") + extansion);
                Archivation.Decompress(newPathToArchive, newPathToFile);

                if (encryptionOptions.NeedToEncrypt)
                {
                    File.WriteAllBytes(newPathToFile, Encryption.Decrypt(newPathToFile, key, iv));
                }
            }
        }
Пример #2
0
        public static void Validate(ETLOptions options)
        {
            WorkFoldersOptions workFoldersOptions = options.WorkFoldersOptions;

            if (!MakeValidDir(workFoldersOptions.SourceDir))
            {
                workFoldersOptions.SourceDir = @"C:\Projects\FileWatcherService\source";
                MakeValidDir(workFoldersOptions.SourceDir);

                Logger.Log("The access to source directory is denied, using default directory.");
            }

            if (!MakeValidDir(workFoldersOptions.TargetDir))
            {
                workFoldersOptions.TargetDir = @"C:\Projects\FileWatcherService\target";
                MakeValidDir(workFoldersOptions.TargetDir);

                Logger.Log("The access to target directory is denied, using default directory.");
            }


            LoggerOptions loggerOptions = options.LoggerOptions;

            if (!MakeValidFile(loggerOptions.LogFile))
            {
                loggerOptions.LogFile = @"C:\Projects\FileWatcherService\log.txt";
                MakeValidFile(loggerOptions.LogFile);

                Logger.Log("The access to log file is denied, using default log file.");
            }


            ArchivationOptions archivationOptions = options.ArchivationOptions;

            if (!MakeValidDir(archivationOptions.ArchiveDir))
            {
                archivationOptions.ArchiveDir = @"C:\Projects\FileWatcherService\target\Archive";
                MakeValidDir(archivationOptions.ArchiveDir);

                Logger.Log("The access to archive directory is denied, using default directory.");
            }

            if ((int)archivationOptions.CompressionLevel < 0 || (int)archivationOptions.CompressionLevel > 2)
            {
                archivationOptions.CompressionLevel = System.IO.Compression.CompressionLevel.Optimal;

                Logger.Log("Incorrect value of compression level. Default value is set.");
            }
        }
Пример #3
0
 public static void Compress(string src, string arhcivePath,
                             ArchivationOptions archivationOptions)
 {
     using (FileStream sourceStream = new FileStream(src, FileMode.OpenOrCreate))
     {
         using (FileStream targetStream = File.Create(arhcivePath))
         {
             using (GZipStream compressStream = new GZipStream(targetStream,
                                                               archivationOptions.CompressionLevel))
             {
                 sourceStream.CopyTo(compressStream);
             }
         }
     }
 }