public IReadOnlyList <FileDiff> run() { Regex reex = null; Regex re = null; maxTasks = BUCommon.IOUtils.DefaultTasks(maxTasks); var ll = new LocalLister(); var localfiles = ll.getList(pathRoot, exclude, filter); var remoteFiles = (new FileList { account = account, cache = cache, container = container, versions = false, useRemote = useRemote, pathRE = null } ).run(); if (!string.IsNullOrWhiteSpace(filter)) { re = new Regex(filter, RegexOptions.Compiled | RegexOptions.IgnoreCase); remoteFiles = remoteFiles.Where(x => re.IsMatch(x.path)).ToList(); } if (!string.IsNullOrWhiteSpace(exclude)) { reex = new Regex(exclude, RegexOptions.Compiled | RegexOptions.IgnoreCase); remoteFiles = remoteFiles.Where(x => !reex.IsMatch(x.path)).ToList(); } var dd = new DirDiff(); if (useHash) { dd.usehash = true; dd.privateKey = privateKey; dd.pathRoot = pathRoot; } dd.maxTasks = this.maxTasks; var diffs = dd.compare(localfiles, remoteFiles); /* filter out unknowns, sames */ return(diffs .Where(x => x.type == DiffType.created || x.type == DiffType.updated || x.type == DiffType.deleted) .ToList()); }