public static void Copy(CopyOptions options) { var dumpOptions = new DumpOptions { Host = options.FromHost, Port = options.FromPort, DatabaseName = options.FromDatabase, Query = options.Query, OutputPath = options.Path, MongoDumpBinary = options.MongoDumpBinary }; Dump(dumpOptions); var restoreOptions = new RestoreOptions { Host = options.ToHost, Port = options.ToPort, DatabaseName = options.ToDatabase, Drop = options.Drop, InputPath = Path.Combine(options.Path, options.FromDatabase), MongoRestoreBinary = options.MongoRestoreBinary }; Restore(restoreOptions); }
public static void Restore(RestoreOptions options) { var fileNames = Directory.GetFiles(options.InputPath, "*.bson.gz"); var restoreCommandLineBase = $"--uri {options.Uri} --gzip"; if (options.Drop) { restoreCommandLineBase += $" --drop"; } for (var i = 0; i < fileNames.Length; i++) { var bsonFullPath = fileNames[i]; var collectionName = Path.GetFileNameWithoutExtension(bsonFullPath); Console.WriteLine($"[{i + 1}/{fileNames.Length}] Restoring {collectionName} from {bsonFullPath}"); var archiveName = Path.GetFileName(bsonFullPath); var restoreCommandline = $"{restoreCommandLineBase} {bsonFullPath}"; var process = Process.Start(new ProcessStartInfo(options.MongoRestoreBinary, restoreCommandline) { CreateNoWindow = true, UseShellExecute = false, RedirectStandardOutput = true, StandardOutputEncoding = Encoding.UTF8 }); if (process == null) { throw new Exception($"Failed to start {restoreCommandline}"); } process.WaitForExit(); if (process.ExitCode != 0) { throw new Exception($"Failed to restore collection {archiveName}"); } } }
public static void Copy(CopyOptions options) { var dumpOptions = new DumpOptions { Uri = options.FromUri, Query = options.Query, OutputPath = options.Path, MongoDumpBinary = options.MongoDumpBinary }; Dump(dumpOptions); var dataBaseName = MongoUrl.Create(options.FromUri).DatabaseName; var restoreOptions = new RestoreOptions { Uri = options.ToUri, InputPath = Path.Combine(options.Path, dataBaseName), MongoRestoreBinary = options.MongoRestoreBinary }; Restore(restoreOptions); }