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
@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
命令,打开定时任务。 - 添加定时任务。
- 选择选项,一直下一步到“操作”选项。
- 可以运行测试一下,结果如下。
到这里整个流程就说完了,欢迎看客们指出不足之处。
备注:我的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 版权协议,转载请附上原文出处链接和本声明。