MongoDB — windows下自动备份脚本

突然发现博客的摘要从来没显示过?why?

主要说一下windows下的MongoDB的自动备份。在网上也找了很多,大多数都是直接贴代码,对我这种不写bat的玩家很不友好而且都是说一半留一半,不能整个流程下来。现在说下要实现的预期:每天自动备份、压缩备份文件、删除七天之前的备份。下面直接上bat代码,后面有讲解以及如何加入windows的定时计划(win10为例)。

@echo off

rem 每天自动备份整个数据库,保存七天的压缩包,删除七天之前的数据。

cd /D D:\work\mongodb\bin

mongodump -o D:\dump\dump\

D:\work\tools\7z\7z.exe a D:\dump\%date:~0,4%-%date:~5,2%-%date:~8,2%.7z  D:\dump\dump

Forfiles /p D:\dump\ /s /d -7 /m *.* /c "cmd /c del /q /f @path"

下面说一下这个bat

  1. @echo off:关闭终端回显,通俗点说就是只显示运行结果,其他的都不显示。
  2. rem:注释行,没啥好解释的。
  3. cd:本来我bat是放到了MongoDB\bin目录,想着不用切目录,谁知道放入win10的定时计划的时候并没有正常执行,索性就彻底加个切目录,这样这个bat放任何地方都可以,不限制了位置。命令很简单:前面切盘符,后面切目录。
  4. mongodumpMongoDB自带的指令,这个不用多讲了把。有点注意的是我并没有加-d参数,表示备份所有的DataBase。我看网上的bat有很多都先用md命令创建目录结构,其实不用因为MongoDB会自动创建,当然需要注意的是要保证有创建目录的权限。
  5. 7z:用它的主要作用就是数据库比较大,及时只有七天也比较占空间,索性只保留压缩文件。a参数表示添加文件的压缩包,或者创建新的压缩包。 会把上一步备份的文件也就是在D:\dump\dump\下的文件压缩到D:\dump\dump\2019-01-29.7z文件内。%date:~0,4%-%date:~5,2%-%date:~8,2%是bat自己的命令意思是取当天的YYYY-MM-DD。当然还有其他的用法,详情见链接:bat中date的用法7z命令详情
  6. Forfiles:本来以为删除七天前的文件会麻烦点,没想到windows已经自带了,用起来很方便。/p表示要删除哪个目录下的文件;/s表示表示递归搜索子目录(这里其实并没有用到);/d表示要删除几天前的文件(这里是七天前的);/m表示要删除的文件类型(这里没有做强调,表示删除所有文件类型);/c表示自行指定的命令。需要注意的是这条命令不会删除文件夹,但我要删除的是.7z文件所以也没啥影响。Forfiles详情
  7. cmd /c del /q /f @path/c 表示执行完批处理命令后,关闭CMD窗口;del表示删除文件命令;/q表示安静模式;/f表示强制删除只读文件(这里其实并没有用到)。

到这里bat解释完了,下面以win10为例说一下何如加入定时计划。

  1. 运行taskschd.msc命令,打开定时任务。在这里插入图片描述
  2. 添加定时任务。在这里插入图片描述
  3. 选择选项,一直下一步到“操作”选项。在这里插入图片描述
  4. 可以运行测试一下,结果如下。在这里插入图片描述

到这里整个流程就说完了,欢迎看客们指出不足之处。

备注:我的mongodb安装目录比较特殊,个人习惯了安装的软件不放到C盘,如果用默认的安装目录的话会在“C:\Program Files”这个目录里面,再切换目录的时候会提示切换错误,因为目录里面带有空格,bat会把空格当成结束符。尝试过用引号/使用start等方式并不太好使,可能是因为当时尝试的时候是在服务器上,win版本差异导致的。下边提供一种通用的,创造一个虚拟镜像,使用subst命令。

rem 创建一个w盘来映射mongdb的安装目录
subst w: "C:\Program Files\MongoDB\Server\3.4\bin"

cd w:\

mongodump -o D:\dump\dump\

D:\work\tools\7z\7z.exe a D:\dump\%date:~0,4%-%date:~5,2%-%date:~8,2%.7z  D:\dump\dump

Forfiles /p D:\dump\ /s /d -7 /m *.* /c "cmd /c del /q /f @path"

rem 删除映射
subst w: /D

版权声明:本文为qq_40140699原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>