Сценарий оболочки : Дамп MongoDB

#linux #database #mongodb #shell #sh

Вопрос:

Я создаю сценарий оболочки для автоматического сброса базы данных. У меня есть текущий код ниже.

 #!/bin/sh
FILENAME=backup_`date  %m%d%y%H`.zip
DEST=/backup/$FILENAME
SERVER=127.0.0.1:27017
mongodump -h $SERVER -d "database-cms" --archive=$DEST --gzip

 

Проблема в том, что когда я открываю zip-файл, он показывает один двоичный файл. Обычно, когда я сбрасываю вручную, он состоит из файлов bson и json. Я не знаю, что я делаю неправильно, я ожидаю zip-файл с файлом bson и json.

ОБНОВЛЕНИЕ Выясняет, что —архив возвращает двоичный файл. Я обновил коды, чтобы:

 #!/bin/sh
FILENAME=configurator_`date  %m%d%y%H`.tar.gz
DEST=/home/glenn/projects/database_dump/backup
SERVER=127.0.0.1:27017

mongodump -h $SERVER -d siaphaji-cms --out $DEST;

tar -zcvf $FILENAME siaphaji-cms
 

Проблема в том, как я могу специально указать папку siaphaji-cms. Способ, которым он работает сейчас, заключается в том, что при сжатии он сжимает все внутри папки резервного копирования.

Комментарии:

1. Я не эксперт, но вы уверены, что используете --archive его, когда сбрасываете вручную, а не --out ?

2. Я думаю mongodump , что всегда создается двоичный файл. Может быть, вы ищете mongoexport инструмент?

3. Да, он создает двоичный файл, я меняю его на —out. Единственная оставшаяся проблема-это то, как я удаляю этот файл. Я обновлю вопрос

Ответ №1:

Это на самом деле работает так, как задумано, когда вы используете --archive .

Альтернативой является предоставление path файла to --out , который затем предоставит вам отдельные файлы BSON и JSON … вам придется вручную разархивировать их (или указать результирующий подкаталог/ies.

Комментарии:

1. Означает ли это, что я могу восстановить двоичный файл? Потому что я пытался посмотреть, могу ли я восстановить двоичный файл, и я не могу найти способ сделать это. Вот почему я подумал, что у меня какая-то проблема

2. По крайней мере, так говорится в руководстве mongorestore (проверено на 4.2)… Хотя я еще не пробовал этого. Монгодб, который у нас есть на работе, настолько стар, что он не знает --archive , поэтому я не могу его проверить.