Beispiel #1
0
        public RestorePoint Create(string backupPath, List <FileInformation> files, List <RestorePoint> restorePoints,
                                   IDateTimeProvider dateTimeProvider, IStorageAlgorithm storageAlgorithm, RestoreType restoreType)
        {
            if (restoreType == RestoreType.Increment)
            {
                RestorePoint        lastFullRestorePoint = restorePoints.Last(x => x.RestoreType == RestoreType.Full);
                List <RestorePoint> lastRestorePoints    = restorePoints.AsEnumerable().Reverse()
                                                           .TakeWhile(x => x.RestoreType == RestoreType.Increment).ToList();
                lastRestorePoints.Add(lastFullRestorePoint);

                List <FileInformation> incrementedFiles = new List <FileInformation>();

                foreach (var file in files)
                {
                    List <FileInformation> fileUpdates = lastRestorePoints
                                                         .Select(x => x.GetFile(file.Path))
                                                         .Where(x => x != null)
                                                         .Cast <FileInformation>()
                                                         .ToList();
                    FileInformation diff = file.GetDiff(fileUpdates);
                    if (diff.Size > 0)
                    {
                        incrementedFiles.Add(diff);
                    }
                }

                files = incrementedFiles;
            }

            RestorePoint restorePoint = storageAlgorithm.Storage(backupPath, dateTimeProvider.GetCurrentTime(),
                                                                 restoreType, files);

            return(restorePoint);
        }
Beispiel #2
0
        public Backup(IStorageAlgorithm storageAlgorithm, ICleanAlgorithm cleanAlgorithm, IFileRepository fileRepository, DateTimeProvider dateTimeProvider)
        {
            _storageAlgorithm = storageAlgorithm ?? throw new ArgumentNullException(nameof(storageAlgorithm));
            _cleanAlgorithm   = cleanAlgorithm ?? throw new ArgumentNullException(nameof(cleanAlgorithm));
            _fileRepository   = fileRepository ?? throw new ArgumentNullException(nameof(fileRepository));
            _dateTimeProvider = dateTimeProvider ?? throw new ArgumentNullException(nameof(dateTimeProvider));

            Id = Guid.NewGuid();
            _watchedFilePaths = new List <String>();
            _restorePoints    = new List <RestorePoint>();
        }
Beispiel #3
0
        public Backup(IStorageAlgorithm storageAlgorithm, IDateTimeProvider dateTimeProvider, IFileSystem fileSystem, IRestorePointCreator restorePointCreator)
        {
            _storageAlgorithm    = storageAlgorithm;
            _dateTimeProvider    = dateTimeProvider;
            _fileSystem          = fileSystem;
            _restorePointCreator = restorePointCreator;

            Id                = Guid.NewGuid();
            _backupPath       = "Backup" + Id.ToString();
            _restorePoints    = new List <RestorePoint>();
            _watchedFilePaths = new List <string>();
        }