linux指定时间备份文件,linux下定时按条件备份mongodb指定的集合

Linux下定时按条件备份mongodb指定的集合

1、说明:

在不使用副本集模式即时备份的情况下,还可以使用Mongdb中自带的两个可以进行备份和恢复的工具,分别是mongodump和mongorestore、mongoexport和mongoimport;

但是这两种备份并没有定时的功能,假如我们需要每天固定一个时间备份数据的话,需要使用linux中的shell脚本并结合linux系统的定时任务crontab;

2、示例脚本代码,脚本逻辑如下:

(1)、获取系统时间,得到备份时的查询条件,开始和结束时间;

(2)、根据开始和结束条件备份数据到指定的临时文件夹dumptest中;

(3)、判断当前日期是不是每月的第一或第二天,如果是第一天,需要把备份的前一天的数据放回到上个月的备份存储文件中;如果是当月第二天,需要新建一个本月的备份数据存储文件;

(4)、把dumptest中每日备份的临时文件追加到相应的数据存储文件中。

dumptest1.sh文件内容如下(本示例在192.168.0.160上操作):

#获取系统时间并转换成毫秒数

currentsec=`date "+%S"`

#从定时任务到这里获取系统时间要消耗一秒,因此减掉

lastsec=$((currentsec-1))

current=`date "+%Y-%m-%d %H:%M:"`$lastsec

timeStamp=`date -d "$current" +%s`

#当前时间的毫秒数

currentTimeStamp=$((timeStamp*1000))

#一天前这个时候的毫秒数

yestodayTimeStamp=$((currentTimeStamp-24*60*60*1000));

#获取当前是哪一天

currentDay=`date "+%d"`

#获取当前月

currentMonth=`date "+%Y%m"`

echo $currentMonth

#上个月月份

lastMonth=`date -d "last month" +%Y%m`

#判断每日备份的临时文件目录是否存在

if [ -e /home/admin/dumptest ]; then

rm -rf dumptest

echo "$current delete dumptest and dump start,currentTimeStamp $currentTimeStamp lastTimeStamp $yestodayTimeStamp" >>/home/admin/testlog.log

else

echo "$current only dump start,currentTimeStamp $currentTimeStamp currentTimeStamp $yestodayTimeStamp" >>/home/admin/testlog.log

fi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值