shell連線mongodb 定時備份shell指令碼
阿新 • • 發佈:2018-12-24
#定時 備份 mongodb表 名稱特點 xxxx_1103_20180503 #!/bin/bash #備份xxxx xxx_1101_20180509 re=$(/root/tools_package/mongodb/bin/mongo xx.xx.xx.xx:xxxx/xxxx -u xxxx -p xxxx --eval "db.getCollectionNames()" | grep "xxx" | sed 's/\"//g' | sed 's/\,//g') nowdate=$(date +%Y%m%d) ago2date=$(date -d '1 days ago' +%Y%m%d) delcol= bakcol= arr=($re) for x in ${arr[@]}; do adate=${x:0-8} #收集 需要刪除的表 if [ $nowdate -ge $adate ]; then delcol=${delcol}" "${x} fi #收集需要備份的表 if [ `grep -c "$x" /root/shell/back-xxx-new/bak-xxx-names` -eq 0 ]; then bakcol=${bakcol}" "${x} fi done #備份 bakarr=($bakcol) for bakc in ${bakarr[@]}; do echo $bakc /root/tools_package/mongodb/bin/mongoexport --port xxxx --db xxxx --collection $bakc --username xxxxx --password xxxx --out /mnt/xxxx/$bakc.json echo $bakc >> /root/shell/back-xxxx-new/bak-col-names done #刪除 過期表 delcommand= delarr=($delcol) for del in ${delarr[@]}; do #echo "db.getCollection('$del').drop()" delcommand="db.getCollection('$del').drop();"${delcommand} done echo $delcommand