mongorestore de stdin

2

Em um servidor remoto eu tenho um arquivo que é a saída do mongodump compactada, deixe-me dizer um arquivo chamado mongodb.tar.gz .

Dentro de mongodb.tar.gz existe uma estrutura de diretórios como esta:

dump/dbname/
dump/dbname/blogs.bson
dump/dbname/blogs.metadata.json
dump/dbname/editors_choice.bson
dump/dbname/editors_choice.metadata.json
...

Existe alguma maneira de restaurar esse despejo sem fazer o download e descompactar todo o arquivo localmente?

Quero dizer algo como:

curl http://remoteserver/mongodb.tar.gz | gunzip | mongorestore -d dbname 
    
por freedev 29.07.2013 / 16:10

3 respostas

2

No momento, isso não é possível, pelo menos não sem escrever algo por conta própria. O recurso foi solicitado como SERVIDOR-4345 e SERVER-5190 mas há vários problemas com uma implementação imediata baseada em como as ferramentas atuais funcionam (ou seja, não é simples de fazer).

    
por 31.07.2013 / 15:59
2

Você só pode canalizar arquivos compactados que contenham uma coleção.

Você poderia fazer:

curl http://remoteserver/mongodb.collection.gz | gunzip -c | mongorestore -d dbname -c collectionname - 

A opção -c gunzip é necessária para que seja gravada no stdout e o último - , portanto, o mongorestore espera entrada do stdin.

Testado com a versão 3.0.7 (não funciona com v2.6.4).

    
por 24.11.2015 / 17:14
0

Embora apenas uma resposta parcial, você poderia usar o fusível para montar o arquivo .tar.gz após baixá-lo.

Buscando uma resposta direta à outra parte, perguntei à pergunta 730494 .

    
por 21.10.2015 / 11:01