#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
, поэтому я не могу его проверить.