static void Main(string[] args) { Console.Title = "BackUper 1.0 Kulikova edition"; //ведем диалог с пользователем DialogConsole.Menu(); }
//добавить в архив 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); } }
//восстановить с архива 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); } }