예제 #1
0
        static void Main(string[] args)
        {
            Console.Title = "BackUper 1.0 Kulikova edition";

            //ведем диалог с пользователем
            DialogConsole.Menu();
        }
예제 #2
0
        //добавить в архив
        public static void AddToArchive()
        {
            //создаём объект архиватор
            BackUper backUper = DialogConsole.InstanceBackUper();

            try
            {
                //получаем папку с файлами для архивипрвания
                DirectoryInfo directoryRun = new DirectoryInfo(backUper.Path);

                //папка где создаём архив
                DirectoryInfo CurrentDirectory = new DirectoryInfo(backUper.PathForCreateDirectoryArchive);

                //создаём архив
                CurrentDirectory.CreateSubdirectory(backUper.nameArhive);

                //создаём в папке фаил логирования
                FileStream stream = new FileStream(backUper.PathLogFile, FileMode.OpenOrCreate, FileAccess.Read);
                stream.Close();

                //запускаем процес создания бэкапов
                backUper.BackUpData(directoryRun);
            }
            catch (System.IO.DirectoryNotFoundException exception)
            {
                Console.WriteLine(exception.Message);
            }
        }
예제 #3
0
        //восстановить с архива
        public static void RestoreFromArchive()
        {
            //получаем информацию для архивирования
            BackUper backUper = DialogConsole.InstanceBackUper();

            try
            {
                using (Stream stream = new FileStream(backUper.PathLogFile, FileMode.Open, FileAccess.Read))
                {
                    using (StreamReader reader = new StreamReader(stream))
                    {
                        //считываем лог фаил
                        string data = reader.ReadToEnd();

                        //регулярное выражения записи резервного копирования файла
                        string pattern = @".*\s*(\d\d).(\d\d).(\d{2,4}).*]\s*(?<origFile>.+?)\s*->\s*(?<archiveFile>.+)\b";

                        bool s = Regex.IsMatch(data, pattern);
                        //если по регулярному выражению найдено хоть 1 соответствие
                        if (Regex.IsMatch(data, pattern))
                        {
                            //получаем соответствие
                            Match match = Regex.Match(data, pattern);

                            //повторяем пока попытки получения следующего удачные
                            while (match.Success)
                            {
                                //получаем путь к файлу оригиналу
                                string fileOriginalPath = match.Groups["origFile"].Value;

                                //если фаил отсутствует, будем его копировать из архивабэкапов
                                if (!File.Exists(fileOriginalPath))
                                {
                                    //ищим самый свежий бэкап в архиве
                                    string fileBackUpPath = SearchBackUpInfo(data, pattern, fileOriginalPath);
                                    File.Copy(fileBackUpPath, fileOriginalPath);
                                }
                                //переходим к следующему совпадению
                                match = match.NextMatch();
                            }
                        }
                    }
                }
            }
            catch (System.IO.DirectoryNotFoundException exception)
            {
                Console.WriteLine(exception.Message);
            }
        }