使用win批处理 .bat文件 备份mongodb 数据集合

代码如下,需要手动配置修改的部分,改为自己的东西,不要直接抄了就用
做的事情就是将mongodb数据库指定的集合备份到硬盘,用的的是mongodump
需要特殊说明一下,mongodump 这个工具在4.4之后,不再自动附带在安装包里面, 得自己去官网下,教程相信大家都可以找得到
我这边mongodb数据库 myDB中每天会生成一个集合tempDatayyyy-MM-dd,数据量不算小,所以数据库不能这样无限制的放下去,我就想着做一个备份.bat文件,就有了如下文件内容。
这里面最后还加了一个删除备份过的集合的操作,需不需看个人,不要的自己去掉

@echo off
rem =====================================================
rem 以下信息需要手动配置修改
rem =====================================================

rem 数据库的IP地址
set DB_HOST=127.0.0.1
rem 数据库的端口
set DB_PORT=27017
rem 数据库名
set DB_NAME=myDB
rem 用户名
set DB_USER=test
rem 用户密码
set DB_PWD=test
rem 数据库的bin目录
set PG_BIN_DIR=D:\soft\MongoDB\Server\4.4\bin
rem 备份文件保存的路径
set BACK_UP_DIR=E:\mongodb_backup
rem 集合名称前缀
set C_NAME_PREFIX=tempData

rem =====================================================
rem 以下信息不需要手动配置修改,处理日期为昨天
rem =====================================================
::--------Generate Last Date----------
@echo off
@Author:Ryan Albert
setlocal EnableDelayedExpansion

echo Generate last datetime...

set TodayYear=%date:~0,4%
set TodayMon=%date:~5,2%
set TodayDay=%date:~8,2%
if "!TodayDay!" == "08" set TodayDay=8
if "!TodayDay!" == "09" set TodayDay=9

set LastdayYear=
set LastdayMon=
set LastdayDay=

set LastdayYear=%TodayYear%
set LastdayMon=%TodayMon%
set /A LastdayDay=TodayDay-1

echo %TodayDay%
echo %LastdayDay%


if "%LastdayDay%" == "0" (
        if "!LastdayMon!" == "01" (
                set LastdayMon=12
                set /A LastdayYear-=1
        ) else (
                set /A LastdayMon-=1
                
                if "!LastdayMon!" == "1" set LastdayMon=01
                if "!LastdayMon!" == "2" set LastdayMon=02
                if "!LastdayMon!" == "3" set LastdayMon=03
                if "!LastdayMon!" == "4" set LastdayMon=04
                if "!LastdayMon!" == "5" set LastdayMon=05
                if "!LastdayMon!" == "6" set LastdayMon=06
                if "!LastdayMon!" == "7" set LastdayMon=07
                if "!LastdayMon!" == "8" set LastdayMon=08
                if "!LastdayMon!" == "9" set LastdayMon=09
        )

        if "!LastdayMon!" == "01" set LastdayDay=31
        if "!LastdayMon!" == "03" set LastdayDay=31
        if "!LastdayMon!" == "04" set LastdayDay=30
        if "!LastdayMon!" == "05" set LastdayDay=31
        if "!LastdayMon!" == "06" set LastdayDay=30
        if "!LastdayMon!" == "07" set LastdayDay=31
        if "!LastdayMon!" == "08" set LastdayDay=31
        if "!LastdayMon!" == "09" set LastdayDay=30
        if "!LastdayMon!" == "10" set LastdayDay=31
        if "!LastdayMon!" == "11" set LastdayDay=30
        if "!LastdayMon!" == "12" set LastdayDay=31
        
        if "!LastdayMon!" == "02" (
                set IsLeapYear=
                
                set /A IsLeapYear=!LastdayYear!%%400
                if "!IsLeapYear!" == "0" (
                        set LastdayDay=29
                        goto MAKELASTDATE
                )
                
                set /A IsLeapYear=!LastdayYear!%%100
                if "!IsLeapYear!" == "0" (
                        set LastdayDay=28
                        goto MAKELASTDATE
                )
                
                set /A IsLeapYear=!LastdayYear%%4
                if "!IsLeapYear!" == "0" (
                        set LastdayDay=29
                        goto MAKELASTDATE
                ) else (
                        set LastdayDay=28
                        goto MAKELASTDATE
                )
        )
)

:MAKELASTDATE

if "%LastdayDay%" == "1" set LastdayDay=01
if "%LastdayDay%" == "2" set LastdayDay=02
if "%LastdayDay%" == "3" set LastdayDay=03
if "%LastdayDay%" == "4" set LastdayDay=04
if "%LastdayDay%" == "5" set LastdayDay=05
if "%LastdayDay%" == "6" set LastdayDay=06
if "%LastdayDay%" == "7" set LastdayDay=07
if "%LastdayDay%" == "8" set LastdayDay=08
if "%LastdayDay%" == "9" set LastdayDay=09

set LastDate=%LastdayYear%-%LastdayMon%-%LastdayDay%

@echo Today   =%date:~0,4%%date:~5,2%%date:~8,2%
@echo Yestoday=%LastDate%
set C_NAME=%C_NAME_PREFIX%%LastDate%
rem =====================================================
rem 以下为批处理逻辑部分,不需要修改
rem =====================================================


cd %PG_BIN_DIR%
mongodump -h %DB_HOST% --port %DB_PORT% -u %DB_USER% -p %DB_PWD% -d %DB_NAME% -c %C_NAME% -o %BACK_UP_DIR%\%C_NAME_PREFIX%_%LastDate% --authenticationDatabase admin
%PG_BIN_DIR%\mongo.exe --host %DB_HOST% --port %DB_PORT% --username %DB_USER% --password %DB_PWD% --authenticationDatabase admin %DB_NAME% --eval "db.getCollection('%C_NAME%').drop()"

@echo Collection deleted successfully.
rem pause
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值