1. 程式人生 > >shell連線mongodb 定時備份shell指令碼

shell連線mongodb 定時備份shell指令碼

#定時 備份 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
使用 crontab -e 新增一行 每天早上6點執行一次