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 )