sh 使用mongorestore从S3备份恢复mongodb数据库的简单shell脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sh 使用mongorestore从S3备份恢复mongodb数据库的简单shell脚本相关的知识,希望对你有一定的参考价值。

#!/bin/bash
TIMESTAMP=`date +%F-%H%M`
DUMP_LOCAL=/tmp/dump-${TIMESTAMP}

# exit if something fails
set -e


if [ $# -lt 2 ]
then
  echo "Usage: `basename $0` database path_or_url_to_dump"
  exit 1
fi

# get instance address
DATABASE=$1

# get the dump location
DUMP_LOCATION=$2

mkdir -p $DUMP_LOCAL

# add the s3 prefix
if [ $DUMP_LOCATION != s3* ]
then  
  DUMP_LOCATION=s3://${DUMP_LOCATION}
fi

echo "Downloading from S3..."
s3cmd get -r ${DUMP_LOCATION%/}/ $DUMP_LOCAL
echo "Done."

pushd $DUMP_LOCAL > /dev/null

echo "Combining..."
cat * > dump.tar.gz
find . -type f -not -name 'dump.tar.gz' | xargs rm
echo "Done."

echo "Extracting..."
tar xvzf dump.tar.gz --strip-components 1
rm -rf dump.tar.gz
echo "Done."

# work around for https://jira.mongodb.org/browse/SERVER-6947
find $DATABASE/. -name '*.json' -exec sed -i -e 's/, \"[a-z]*\" : { \"\$undefined\" : [a-z]* }//g' "{}" \;
perl -pi -e 'chomp if eof' $DATABASE/*.json

echo "Restoring"
mongorestore -d $DATABASE --drop $DATABASE 
echo "Restoring"

popd > /dev/null

rm -rf $DUMP_LOCAL

以上是关于sh 使用mongorestore从S3备份恢复mongodb数据库的简单shell脚本的主要内容,如果未能解决你的问题,请参考以下文章

sh 将MongoDB备份到S3的简单脚本,不会浪费磁盘空间来存储临时文件。还有一种从最新快照恢复的方法。

MongoDB备份(mongodump)和恢复(mongorestore)

MongoDB 备份(mongodump)与恢复(mongorestore)

MongoDB 备份(mongodump)与恢复(mongorestore)

MongoDB 备份(mongodump)与恢复(mongorestore)

Mongo的备份和恢复(mongodump 和mongorestore )