Пример #1
0
        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);
        }
Пример #2
0
        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}");
                }
            }
        }
Пример #3
0
        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);
        }