71

meteor でデプロイされたアプリからデータをエクスポートする簡単な方法はありますか?

たとえば、test.meteor.com という名前のアプリをデプロイしたとします。

そのアプリによって収集されたデータを簡単にダウンロードして、デプロイされたアプリからのデータを使用してローカルで実行できるようにするにはどうすればよいですか?

4

12 に答える 12

90

meteor.com でデプロイされたサイトの URL を取得するには、次のコマンドを使用します (サイトをパスワードで保護している場合は、サイトのパスワードを入力する必要がある場合があります)。

meteor mongo --url YOURSITE.meteor.com

次のようなものが返されます:

mongodb://client:PASSWORD@sky.member1.mongolayer.com:27017/YOURSITE_meteor_com

次のようなプログラムに与えることができるものmongodump

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

パスワードは 1 分間のみ有効です。使用方法:

$ meteor --help mongo
于 2012-09-16T14:31:19.430 に答える
38

そして、反対の方法は次のとおりです:(ローカルモノゴデータベースを流星にアップロードする)

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/
于 2013-05-05T03:02:34.487 に答える
10

Kasper Souren のソリューションに基づいて、現在のバージョンの Meteor で動作し、リモートの Meteor アプリをパスワードで保護するときにも動作する更新されたスクリプトを作成しました。

次のスクリプトを作成してください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

次に、*nix シェルで次のように実行します。

mongodump `coffee parse-mongo-url.coffee`
于 2013-01-23T21:13:30.593 に答える
6

mmongoMeteor データベースで便利に使用できるように、すべての Mongo DB クライアント シェル コマンドをラップするツール を作成しました。(Node Package Manager)を使用する場合はnpm、次の方法でインストールできます。

npm install -g mmongo

それ以外の場合は、 READMEを参照してください。

Meteor データベースをバックアップするには、次のようにします。

mmongo test.meteor.com dump 

それをローカルの開発用隕石にアップロードするには、次のようにします。

mmongo restore dump/test_meteor_com

また、本番データベースを誤って削除した場合:

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

簡単に復元できます:

mmongo test.meteor.com restore dump/test_meteor_com 

コレクション(たとえば )を読み取り可能なものにエクスポートしたい場合tasks

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

次に、テキスト エディターで開きtasks.json、いくつかの変更を加えて、次のように変更を挿入できます。

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

ギットハブNPM

于 2015-04-11T20:14:26.027 に答える
5

あなたのデータはmongodbデータベースにあると思います。その場合、質問は流星よりもmongoに関連しています。mongoexport および mongoimport コマンド ライン ツールを参照してください。

編集(例):

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

このコマンド ライン ツールを使用するには、コンピューターに mongodb をインストールする必要があり、明らかに mongodb 情報が必要です。上記の例では、MongoHQ に接続します (flame.mongohq.com はホスト、「12345」は mongo サーバーのポートです) が、どの Mongo ホストが meteor ホスティングで実際に使用されているかわかりません。Meteor の例 (TODO、Leaderboard など) をローカルで試した場合、Mongo はデフォルトでローカル サーバーを使用するため、既にインストールされている可能性があります。

于 2012-06-14T00:15:42.883 に答える
3

これが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://...:...@...:.../..."
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}
于 2014-02-11T01:34:43.123 に答える
2

meteor-backup is by far the easiest way to do this.

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

As of March 2015 you still need to specify all collections you want to fetch though (until this issue is resolved).


Stuff from the past below

I'm doing

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

together with this little coffeescript, with a mangled extension in order not to confuse Meteor, 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]}"

(it would be nicer if meteor mongo -U --mongodumpoptions would give these options, or if mongodump would accept the mongo:// URL)

于 2012-10-20T00:28:28.617 に答える
1

この単純な Rakefile を作成して、ライブ データベースをローカルにコピーしました。

ライブデータベースをローカルマシンに復元するには...

rake copy_live_db

myappmeteor.com の名前に置き換えますmyapp.meteor.com

「ルビジェム」が必要
「open-uri」が必要

desc "ライブ データベースをローカルの ./dump フォルダーにバックアップする"
タスク :backup_live_db do
  uri = `流星モンゴ myapp --url`
  pass = uri.match(/client:([^@]+)@/)[1]
  puts "ライブ DB パスワードを使用: #{pass}"
  `mongodump -h meteor.m0.mongolayer.com:27017 -d myapp_meteor_com -u client -p #{pass}`
終わり


des "ライブデータベースをローカルにコピー"
タスク :copy_live_db => :backup_live_db do
  server = `メテオモンゴ --url`
  uri = URI.parse(サーバー)
  `mongorestore --host #{uri.host} --port #{uri.port} --db meteor --drop dump/myapp_meteor_com/`
終わり

desc "最後のバックアップを復元"
タスク:復元する
  server = `メテオモンゴ --url`
  uri = URI.parse(サーバー)
  `mongorestore --host #{uri.host} --port #{uri.port} --db meteor --drop dump/myapp_meteor_com/`
終わり
于 2013-04-07T21:23:17.463 に答える
0

sshfsを介してリモートでマウントされたファイルシステムを使用してからrsyncを使用して、mongodbのフォルダー自体またはMeteorフォルダー全体も同期できると思います。これは、増分バックアップを実行するようなものであり、より効率的である可能性があります。コードの変更などを送信するために同じソリューションを使用することは可能です。データベースの変更も同時に取得してみませんか?! (一石二鳥)

于 2015-06-08T11:05:03.473 に答える
0

meteor.com がホストするサイトからデータベースをダンプできる簡単な bash スクリプトを次に示します。

#!/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]}
于 2015-08-27T08:28:11.703 に答える
0

サイトで既存のローカルmongodb データベースを使用するmeteor deploy myAppNameには、mongodb をダンプしてから復元する必要があります。

上記の手順に従ってmongodump(パスを覚えておいてください)、次のコマンドを実行して ' mongorestore' を生成します (2 番目のステップとコピー/貼り付けを置き換えます)。

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_'

それから

$CMD /path/to/dump 

Can mongorestoreは個別の引数ではなく単一の URL 引数を取ることができますか?

于 2014-07-08T23:47:26.697 に答える