Hay una manera sencilla de exportar los datos de un meteoro de aplicación implementados?

Así, por ejemplo, si yo había desplegado una aplicación llamada test.meteor.com…

¿Cómo puedo descargar fácilmente los datos que han sido recogidos por que app – para que pudiera funcionar de forma local con los datos de la aplicación implementados?

InformationsquelleAutor Greg Mercer | 2012-06-13

12 Comentarios

  1. 91

    Para obtener la URL de su desplegados en el sitio meteor.com utilice el comando (puede que tenga que proporcionar su sitio contraseña si la contraseña protegió):

    meteor mongo --url YOURSITE.meteor.com

    Que devolverá algo como :

    mongodb://client:[email protected]:27017/YOURSITE_meteor_com

    Que usted puede dar a un programa como mongodump

    mongodump -u client -h sky.member1.mongolayer.com:27017 -d YOURSITE_meteor_com\
              -p PASSWORD

    La contraseña sólo es bueno para un minuto. Para uso de:

    $ meteor --help mongo
    • Gracias! Esto fue muy útil, excepto que me gustaría añadir que la -d debe ser yoursite_meteor_com.
    • Gracias, estaba buscando esto. Como una nota del lado, el nombre de host para mi proyecto meteor fue skybreak.member1.mongolayer.com en lugar de sky.member1.mongolayer.com
    • Sí, es importante señalar aquí que el \ en el extremo de la base de datos nombre está destinado a permitir que continúe el comando en la línea siguiente en el terminal. No es una parte de la base de datos de nombre y verá un mensaje de error si usted escribe el comando en una sola línea.
    • No funciona para mí. Después de que entre meteor mongo --url YOURSITE.meteor.com, me pidió username & password. Yo intente con el nombre de usuario & contraseña que utilice para acceder a mi cuenta en meteoro, pero no hubo suerte.
  2. 38

    Y aquí es cómo hacer lo contrario: (carga de su local monogo db de meteoros)

    https://gist.github.com/IslamMagdy/5519514

    # How to upload local db to meteor:
    
    # -h = host, -d = database name, -o = dump folder name
    mongodump -h 127.0.0.1:3002 -d meteor -o meteor
    
    # get meteor db url, username, and password
    meteor mongo --url myapp.meteor.com
    
    # -h = host, -d = database name (app domain), -p = password, folder = the path to the dumped db
    mongorestore -u client -h c0.meteor.m0.mongolayer.com:27017 -d myapp_meteor_com -p 'password' folder/
    • Me estoy poniendo de los siguientes errores de las ideas de ERROR: ERROR: el directorio raíz debe ser un volcado de una sola base de datos de ERRORES: cuando se especifica un nombre de base de con –db
    • asegúrese de que su mongorestore carpeta puntos donde la .bson archivos. Por ejemplo, con mongodump -h 127.0.0.1:3002 -d meteor, la ruta de acceso al objeto de dumping db para mongorestore (se ejecuta desde el mismo directorio que el mongodump) es dump/meteor/
  3. 10

    Basado en Kasper Souren la solución que he creado y actualizado un script que funciona con las versiones actuales de Meteoro y también funciona cuando usted proteger su control remoto de Meteoros de la aplicación con una contraseña.

    Favor de crear la secuencia de comandos siguiente parse-mongo-url.coffee:

    spawn = require('child_process').spawn
    mongo = spawn 'meteor', ['mongo', '--url', 'YOURPROJECT.meteor.com'], stdio: [process.stdin, 'pipe', process.stderr]
    
    mongo.stdout.on 'data', (data) ->
        data = data.toString()
        m = data.match /mongodb:\/\/([^:]+):([^@]+)@([^:]+):27017\/([^\/]+)/
        if m?
            process.stdout.write "-u #{m[1]} -p #{m[2]} -h #{m[3]} -d #{m[4]}"
        else
            if data == 'Password: '
                process.stderr.write data

    A continuación, ejecutarlo como este en un *nix shell:

    mongodump `coffee parse-mongo-url.coffee`
    • Esto es increíblemente útil. Ir a tientas con el nombre de usuario y contraseña dentro de un minuto timebox donde las credenciales son válidas para armar una correcta mongodump o mongorestore comando envejece muy rápido.
  4. 6

    He creado una herramienta, mmongo, que envuelve todo el Mongo DB cliente de comandos de la shell para el uso conveniente en un Meteoro de la base de datos. Si utiliza npm (Node Package Manager), se puede instalar con:

    npm install -g mmongo

    De lo contrario, consulte LÉAME.

    Para copia de seguridad de su Meteoro de la base de datos, puede hacer ahora:

    mmongo test.meteor.com dump 

    Para subirlo a su desarrollo local meteoro sería:

    mmongo restore dump/test_meteor_com

    Y si accidentalmente eliminar de su base de datos de producción:

    mmongo test.meteor.com --eval 'db.dropDatabase()'   # whoops!

    Usted puede fácilmente restaurar:

    mmongo test.meteor.com restore dump/test_meteor_com 

    Si prefiere exportar una colección (es decir tasks) a algo legible:

    mmongo test.meteor.com export -c tasks -o tasks.json

    A continuación, puede abrirse tasks.json en su editor de texto, hacer algunos cambios y insertar los cambios con:

    mmongo test.meteor.com import tasks.json -c tasks --upsert

    Github, MECANISMO nacional de prevención

  5. 5

    Supongo que los datos están en una base de datos mongodb, así que si ese es el caso, la pregunta es más bien mongo-relacionados de meteoro. Usted puede tomar un vistazo a mongoexport y mongoimport herramientas de línea de comandos.

    Editar (por ejemplo):

    mongoexport -h flame.mongohq.com:12345 -u my_user -p my_pwd -d my_db -c my_coll

    Que usted necesita para instalar mongodb en su computadora para tener esta herramienta de línea de comandos, y, obviamente, usted necesita su mongodb informaciones. En el ejemplo de arriba, me conecto a MongoHQ (flame.mongohq.com es el anfitrión, ‘12345’ es el puerto de su mongo servidor), pero no sé que Mongo host es utilizado por el meteoro de hosting. Si se trató de un Meteoro ejemplos (TODOs, Clasificación, etc.) a nivel local, es probable que usted ya ha instalado Mongo, ya que utiliza un servidor local de forma predeterminada.

    • No estoy seguro si puedo correr mongo línea de comandos en el meteor servidor. ¿Alguien sabe?
    • De hecho, se ejecuta desde el ordenador, pero usted especificar la hospedado en la nube mongo información (host, port, probablemente usuario & pwd). Voy a tratar de dar un ejemplo en un par de minutos.
    • He editado la respuesta, espero que esto te ayude. El comando es bastante sencillo, me mostró el más útil/argumentos comunes, por defecto, la salida a stdout, usted puede redirigir a un archivo o especificar directamente como argumento. mongoexport –ayuda es bien detallado.
  6. 3

    Aquí es otra solución en bash

    #! /bin/bash
    # inspired by http://stackoverflow.com/questions/11353547/bash-string-extraction-manipulation
    
    # http://www.davidpashley.com/articles/writing-robust-shell-scripts/
    set -o nounset
    set -o errexit
    set -o pipefail
    set -x
    
    # stackoverflow.com/questions/7216358/date-command-on-os-x-doesnt-have-iso-8601-i-option
    function nowString {
        date -u +"%Y-%m-%dT%H:%M:%SZ"
    }
    
    NOW=$(nowString)
    
    # prod_url="mongodb://...:[email protected]:.../..."
    prod_pattern="mongodb://([^:]+):([^@]+)@([^:]+):([^/]+)/(.*)"
    prod_url=$(meteor mongo katapoolt --url | tr -d '\n')
    [[ ${prod_url} =~ ${prod_pattern} ]]
    PROD_USER="${BASH_REMATCH[1]}"
    PROD_PASSWORD="${BASH_REMATCH[2]}"
    PROD_HOST="${BASH_REMATCH[3]}"
    PROD_PORT="${BASH_REMATCH[4]}"
    PROD_DB="${BASH_REMATCH[5]}"
    PROD_DUMP_DIR=dumps/${NOW}
    mkdir -p dumps
    
    # local_url="mongodb://...:.../..."
    local_pattern="mongodb://([^:]+):([^/]+)/(.*)"
    local_url=$(meteor mongo --url | tr -d '\n')
    [[ ${local_url} =~ ${local_pattern} ]]
    LOCAL_HOST="${BASH_REMATCH[1]}"
    LOCAL_PORT="${BASH_REMATCH[2]}"
    LOCAL_DB="${BASH_REMATCH[3]}"
    
    mongodump --host ${PROD_HOST} --port ${PROD_PORT} --username ${PROD_USER} --password ${PROD_PASSWORD} --db ${PROD_DB} --out ${PROD_DUMP_DIR}
    mongorestore --port ${LOCAL_PORT} --host ${LOCAL_HOST} --db ${LOCAL_DB} ${PROD_DUMP_DIR}/${PROD_DB}
    • Sería asesino si la url remota era un argv de la secuencia de comandos bash! Muchas gracias.
    • No funciona en Git Shell, como parece que el libregex se entregan con msysgit no admite la =~ operador.
  7. 2

    meteoro-copia de seguridad es por lejos la forma más fácil de hacer esto.

    sudo npm install -g meteor-db-utils
    meteor-backup [domain] [collection...]

    A partir de Marzo de 2015 usted todavía necesita especificar todas las colecciones que quieres recuperar, aunque (hasta este problema se ha resuelto).


    Cosas del pasado por debajo de

    Estoy haciendo

    mongodump $(meteor mongo -U example.meteor.com | coffee url2args.cfee)

    junto con este pequeño coffeescript, con un mutilado de extensión con el fin de no confundir a los Meteoros, url2args.cfee:

    stdin = process.openStdin()
    stdin.setEncoding 'utf8'
    stdin.on 'data', (input) ->
      m = input.match /mongodb:\/\/(\w+):((\w+-)+\w+)@((\w+\.)+\w+):27017\/(\w+)/
      console.log "-u #{m[1]} -h #{m[4]} -p #{m[2]} -d #{m[6]}"

    (sería mejor si meteoro mongo -U –mongodumpoptions daría a estas opciones, o si mongodump aceptaría el mongo://URL)

  8. 2
    # How to upload local db to meteor:
    
    # -h = host, -d = database name, -o = dump folder name
    mongodump -h 127.0.0.1:3001 -d meteor -o meteor
    
    # get meteor db url, username, and password
    meteor mongo --url myapp.meteor.com
    
    # -h = host, -d = database name (app domain), -p = password, folder = the path to the dumped db
    mongorestore -u client -h http://production-db-a2.meteor.io:27017 -d myapp_meteor_com -p 'password' folder/

    Si bien la carga de base de datos local a remoto db, teniendo una afirmación Excepción

    [email protected]-PC:$ mongorestore -u client -h http://production-db-a2.meteor.io:27017 -d myapp_meteor_com -p my_password local/
    2015-04-22T16:37:38.504+0530 Assertion failure _setName.size() src/mongo/client/dbclientinterface.h 219
    2015-04-22T16:37:38.506+0530 0xdcc299 0xd6c7c8 0xd4bfd2 0x663468 0x65d82e 0x605f98 0x606442 0x7f5d102f8ec5 0x60af41 
     mongorestore(_ZN5mongo15printStackTraceERSo+0x39) [0xdcc299]
     mongorestore(_ZN5mongo10logContextEPKc+0x198) [0xd6c7c8]
     mongorestore(_ZN5mongo12verifyFailedEPKcS1_j+0x102) [0xd4bfd2]
     mongorestore(_ZN5mongo16ConnectionStringC2ENS0_14ConnectionTypeERKSsS3_+0x1c8) [0x663468]
     mongorestore(_ZN5mongo16ConnectionString5parseERKSsRSs+0x1ce) [0x65d82e]
     mongorestore(_ZN5mongo4Tool4mainEiPPcS2_+0x2c8) [0x605f98]
     mongorestore(main+0x42) [0x606442]
     /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) [0x7f5d102f8ec5]
     mongorestore() [0x60af41]
    terminate called after throwing an instance of 'mongo::AssertionException'
      what():  assertion src/mongo/client/dbclientinterface.h:219
    Aborted (core dumped)
  9. 1

    Hice este simple Rakefile para copiar el vivir db locales.

    Para restaurar el vivir db a mi máquina local acabo de hacer…

    rake copy_live_db

    Reemplazar myapp con el nombre de su meteor.com – e.g myapp.meteor.com.

    require 'rubygems' 
    requieren de un 'open-uri' 
    
    desc "Copia de seguridad de los vivos db local ./volcado de la carpeta" 
    tarea :backup_live_db ¿ 
    uri = `meteoro 'mongo' myapp --url" 
    pass = uri.match(/cliente:([^@]+)@/)[1] 
    pone "Usar live db contraseña: #{pasar}" 
    `mongodump -h meteoro.m0.mongolayer.com:27017 -d myapp_meteor_com -u cliente -p #{pasar}` 
    final 
    
    
    desc "Copia vivir de la base de datos local" 
    tarea :copy_live_db => :backup_live_db ¿ 
    server = `meteoro 'mongo' --url" 
    uri = URI.parse(servidor) 
    `mongorestore --host #{uri.host} --port #{uri.puerto} --db meteoro --gota de volcado/myapp_meteor_com/` 
    final 
    
    desc "Restaurar la última copia de seguridad" 
    tarea :restauración de hacer 
    server = `meteoro 'mongo' --url" 
    uri = URI.parse(servidor) 
    `mongorestore --host #{uri.host} --port #{uri.puerto} --db meteoro --gota de volcado/myapp_meteor_com/` 
    final 
    
  10. 0

    Utilizar una local mongodb base de datos en su meteor deploy myAppName sitio, usted necesita para volcar, a continuación, restaurar la mongodb.

    Siga las instrucciones anteriores para mongodump (recuerde que la ruta de acceso) y, a continuación, ejecute lo siguiente para generar su ‘mongorestore‘ (sustituye el segundo paso y copiar/pegar):

    CMD=meteor mongo -U myAppName.meteor.com | tail -1 | sed 's_mongodb://\([a-z0-9\-]*\):\([a-f0-9\-]*\)@\(.*\)/\(.*\)_mongorestore -u \1 -p \2 -h \3 -d \4_'

    luego

    $CMD /path/to/dump 

    De Puede mongorestore dar un solo argumento url en lugar de argumentos separados?

  11. 0

    Creo que se puede utilizar de forma remota un sistema de archivos montado a través de sshfs y, a continuación, rsync para sincronizar la mongodb la propia carpeta o todo el Meteoro carpeta creo así. Esto es como hacer una copia de seguridad incremental y potencialmente más eficiente.
    Es posible utilizar la misma solución para el envío de cambios de código, etc. así que ¿por qué no conseguir cambios de base de datos al mismo tiempo?! (matando 2 pájaros con 1 piedra)

  12. 0

    Aquí es un simple script en bash que permite volcar la base de datos de meteor.com los sitios alojados.

    #!/bin/bash
    
    site="rankz.meteor.com"
    name="$(meteor mongo --url $site)"
    echo $name
    
    IFS='@' read -a mongoString <<< "$name"
    
    echo "HEAD: ${mongoString[0]}"
    echo "TAIL: ${mongoString[1]}"
    
    IFS=':' read -a pwd <<< "${mongoString[0]}"
    
    echo "${pwd[1]}"
    echo "${pwd[1]:2}"
    echo "${pwd[2]}"
    
    
    IFS='/' read -a site <<< "${mongoString[1]}"
    
    echo "${site[0]}"
    echo "${site[1]}"
    
    
    mongodump -u ${pwd[1]:2} -h ${site[0]} -d ${site[1]}\
              -p ${pwd[2]}

Dejar respuesta

Please enter your comment!
Please enter your name here