Example #1
0
        private static void PrepareBlockAndFileList(LocalRestoreDatabase database, Options options, Library.Utility.IFilter filter, RestoreResults result)
        {
            // Create a temporary table FILES by selecting the files from fileset that matches a specific operation id
            // Delete all entries from the temp table that are excluded by the filter(s)
            using(new Logging.Timer("PrepareRestoreFileList"))
            {
                var c = database.PrepareRestoreFilelist(options.Time, options.Version, filter, result);
                result.OperationProgressUpdater.UpdatefileCount(c.Item1, c.Item2, true);
            }

			using(new Logging.Timer("SetTargetPaths"))
    			if (!string.IsNullOrEmpty(options.Restorepath))
    			{
    				// Find the largest common prefix
    				string largest_prefix = database.GetLargestPrefix();
                    result.AddVerboseMessage("Mapping restore path prefix to \"{0}\" to \"{1}\"", largest_prefix, Library.Utility.Utility.AppendDirSeparator(options.Restorepath));
    
    				// Set the target paths, special care with C:\ and /
    				database.SetTargetPaths(largest_prefix, Library.Utility.Utility.AppendDirSeparator(options.Restorepath));
    			}
    			else
    			{
    				database.SetTargetPaths("", "");
    			}

            // Create a temporary table BLOCKS that lists all blocks that needs to be recovered
			using(new Logging.Timer("FindMissingBlocks"))
                database.FindMissingBlocks(result);
        }