最近怼一个老项目,需要做MongoDB
的备份,就找了一下脚本,大家可以参考一下。
备份脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| #!/bin/bash sourcepath='' targetpath='/home/ubuntu/backup_db' # 改成你自己的备份目录 nowtime=$(date +%Y%m%d)
start() { ${sourcepath}mongodump --host 127.0.0.1 --port 27017 --out ${targetpath}/${nowtime} # 备份 127.0.0.1:27017 的整个MongoDB数据库 # 输出到目标目录下的当前日期目录 # 如:/backup_db/20171003/ } execute() { start if [ $? -eq 0 ] then echo "back successfully!" else echo "back failure!" fi }
if [ ! -d "${targetpath}/${nowtime}/" ] then mkdir ${targetpath}/${nowtime} fi execute echo "============== back end ${nowtime} =============="
|
使用前记得改一下脚本里面的参数,按照需求调整目录
删除过期备份
1 2 3 4 5 6 7 8 9
| #!/bin/bash targetpath='/home/ubuntu/backup_db' nowtime=$(date -d '-7 days' "+%Y%m%d") if [ -d "${targetpath}/${nowtime}/" ] then rm -rf "${targetpath}/${nowtime}/" echo "=======${targetpath}/${nowtime}/===删除完毕==" fi echo "===$nowtime ==="
|
哈哈,只是把命令改成 rm -rf
了而已。记得按照需求调整参数里面的目录
自动备份和删除备份
不得不说我们的主角 crontab -e
Cron
可以实现定时任务的功能。
1 2
| 10 04 * * * /home/ubuntu/cron-shell/mongobak 1 > /var/log/cron/crontab_mongo_back.log & 10 02 * * * /home/ubuntu/cron-shell/mongobak_delete 1 > /var/log/cron/crontab_mongo_delete.log &
|
半夜三更的时候,定时任务就会执行 mongobak
和 mongobak_delete
两个脚本啦~
并且两个脚本的输出也会保存到 /var/log/cron/
的日志文件里面,方便你后期检查。
上面的命令请根据实际需要调整喔
除非注明,麦麦小家文章均为原创,转载请以链接形式标明本文地址。
版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
本文地址:https://blog.micblo.com/2017/10/03/MongoDB%E8%87%AA%E5%8A%A8%E5%A4%87%E4%BB%BD%E5%B0%8F%E8%84%9A%E6%9C%AC/