コード例 #1
0
        public void Create(IWardenBaseOptions opts)
        {
            Cleanup();

            GetRootBackupDirectory().Create();

            var directory = _fs.DirectoryInfo.FromDirectoryName(opts.Source);

            if (!directory.Exists)
            {
                throw new DirectoryNotFoundException($"Directory '{opts.Source}' not found");
            }

            var filesToBackup = _fs.DirectoryInfo
                                .FromDirectoryName(opts.Source)
                                .EnumerateFiles("*", opts.Search)
                                .ToList();

            foreach (var file in filesToBackup)
            {
                var fileBackupDirectoryInfo = _fs.DirectoryInfo.FromDirectoryName(file.DirectoryName.Replace(opts.Source, GetRootBackupDirectory().FullName));
                if (!fileBackupDirectoryInfo.Exists)
                {
                    fileBackupDirectoryInfo.Create();
                }
                var backupFilePath = _fs.Path.Combine(fileBackupDirectoryInfo.FullName, file.Name);

                file.CopyTo(backupFilePath);
            }
        }
コード例 #2
0
        public void Restore(IWardenBaseOptions opts)
        {
            var filesToRestore = _fs.DirectoryInfo
                                 .FromDirectoryName(GetRootBackupDirectory().FullName)
                                 .EnumerateFiles("*", opts.Search)
                                 .ToList();

            foreach (var file in filesToRestore)
            {
                var fileDirectoryInfo = _fs.DirectoryInfo.FromDirectoryName(file.DirectoryName.Replace(GetRootBackupDirectory().FullName, opts.Source));
                if (!fileDirectoryInfo.Exists)
                {
                    fileDirectoryInfo.Create();
                }
                var restoreFilePath = _fs.Path.Combine(fileDirectoryInfo.FullName, file.Name);

                file.CopyTo(restoreFilePath, true);
            }
        }
コード例 #3
0
 public void Execute(IWardenBaseOptions options) => Create(options);