突然发现博客的摘要从来没显示过?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
-
@echo off:关闭终端回显,通俗点说就是只显示运行结果,其他的都不显示。 -
rem:注释行,没啥好解释的。 -
cd:本来我bat是放到了MongoDB的\bin目录,想着不用切目录,谁知道放入win10的定时计划的时候并没有正常执行,索性就彻底加个切目录,这样这个bat放任何地方都可以,不限制了位置。命令很简单:前面切盘符,后面切目录。 -
mongodump:MongoDB自带的指令,这个不用多讲了把。有点注意的是我并没有加-d参数,表示备份所有的DataBase。我看网上的bat有很多都先用md命令创建目录结构,其实不用因为MongoDB会自动创建,当然需要注意的是要保证有创建目录的权限。 -
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命令详情。 -
Forfiles:本来以为删除七天前的文件会麻烦点,没想到windows已经自带了,用起来很方便。/p表示要删除哪个目录下的文件;/s表示表示递归搜索子目录(这里其实并没有用到);/d表示要删除几天前的文件(这里是七天前的);/m表示要删除的文件类型(这里没有做强调,表示删除所有文件类型);/c表示自行指定的命令。需要注意的是这条命令不会删除文件夹,但我要删除的是.7z文件所以也没啥影响。Forfiles详情 -
cmd /c del /q /f @path:/c表示执行完批处理命令后,关闭CMD窗口;del表示删除文件命令;/q表示安静模式;/f表示强制删除只读文件(这里其实并没有用到)。
到这里bat解释完了,下面以win10为例说一下何如加入定时计划。
- 运行
taskschd.msc命令,打开定时任务。 - 添加定时任务。
- 选择选项,一直下一步到“操作”选项。
- 可以运行测试一下,结果如下。
到这里整个流程就说完了,欢迎看客们指出不足之处。