몽고DB 백업 Shell 스크립트
백업 shell script (file명 : mongo_back.sh)
#!/bin/sh
dump_dir=""
dump_lvl=1
dump_db=""
dump_col=""
dump_host=""
dump_port=""
arg_key=""
for arg in "$@"
do
if [[ $arg == "-"* ]]; then
arg_key=$arg
continue
fi
case $arg_key in
*"-dir" )
dump_dir=$arg
;;
*"-lvl" )
dump_lvl=$arg
;;
*"-db" )
dump_db=$arg
;;
*"-col" )
dump_col=$arg
;;
*"-host" )
dump_host=$arg
;;
*"-port" )
dump_port=$arg
;;
* )
echo "mongo backup: invalid option ${arg_key}"
exit ;;
esac
done
if [ -z ${dump_dir} ]; then
dump_dir="/work/mongo-back/dump"
else
dump_dir="${dump_dir}"
fi
if [ -z ${dump_host} ]; then
dump_host="localhost"
else
dump_host="${dump_host}"
fi
if [ -z ${dump_port} ]; then
dump_port="27017"
else
dump_port="${dump_port}"
fi
if [ ! -d ${dump_dir} ]; then
mkdir -p ${dump_dir}
fi
rm -rf "${dump_dir}/${dump_db}-old${dump_lvl}/${dump_col}.bson"
rm -rf "${dump_dir}/${dump_db}-old${dump_lvl}/${dump_col}.metadata.json"
for ((i=${dump_lvl}-1;i>=0;i--))
do
backup_data=""
backup_metadata=""
if [ $i -gt 0 ]; then
backup_data="${dump_dir}/${dump_db}-old${i}/${dump_col}.bson"
backup_metadata="${dump_dir}/${dump_db}-old${i}/${dump_col}.metadata.json"
else
backup_data="${dump_dir}/${dump_db}/${dump_col}.bson"
backup_metadata="${dump_dir}/${dump_db}/${dump_col}.metadata.json"
fi
backup_data_old="${dump_dir}/${dump_db}-old$(($i+1))/${dump_col}.bson"
backup_metadata_old="${dump_dir}/${dump_db}-old$(($i+1))/${dump_col}.metadata.json"
if [ ! -d "${dump_dir}/${dump_db}-old$(($i+1))" ]; then
mkdir -p "${dump_dir}/${dump_db}-old$(($i+1))"
fi
if [ -f ${backup_data} ]; then
mv ${backup_data} ${backup_data_old}
fi
if [ -f ${backup_metadata} ]; then
mv ${backup_metadata} ${backup_metadata_old}
fi
done
mongodump --out ${dump_dir} --host ${dump_host} --port ${dump_port} --db ${dump_db} --collection ${dump_col}Shell 실행
/usr/local/etc/mongo_back.sh -dir /work/mongo-back/dump -lvl 2 -db tornado -col facebook_content설정된 레벨에 따라 history DB백업 폴더를 생성하여 컬렉션 파일을 백업하는 Shell script 입니다.
백업을 해야 해서 노가다로 하려다가 스크립트 공부도 할 겸 파라미터 받아서 처리하는 걸로 해 봤습니다.
리눅스 스크립트 짜는 것도 나름 재미있네요 ^^
몽고DB 많이 쓰시고 또 백업할 일도 많을 듯 하여 공유 드립니당~
설명은 제 블로그 가면 좀 더 자세히 되어 있으니 참고 하실 분들은 아래로 ^^;
Postgresql 백업 Shell Script도 있어요 ㅇㅇ
출처: http://ororonge.tistory.com/17 [java, C#, web, database developer]