Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save romejiang/9d6cddee3db44c8c2c980c17665ba31a to your computer and use it in GitHub Desktop.
Save romejiang/9d6cddee3db44c8c2c980c17665ba31a to your computer and use it in GitHub Desktop.
服务器每日自动备份 MongoDB 数据库的配置方法

第一步,创建一个存放备份的文件夹:

比如 mkdir /alidata/backup

第二步,新建一个自动备份的脚本:

#!/bin/sh
NAME='mxlzb' # 手动修改为待备份项目的数据库名
DATE=`date +%Y%m%d%H%M%S`
DEST='/alidata/backup' # 手动修改为刚刚创建的文件夹
mkdir -p $DEST
cd $DEST
mongodump -d $NAME -o $DEST
tar -zcvf ${NAME}${DATE}.tar.gz ${NAME}
rm -Rf $NAME
# 删除7天前的备份内容
find . -name "mongo-*" -mtime +7 | xargs rm

我将其保存为 /alidata/scripts/db_backup.sh

第三步,修改定时任务:

sudo crontab -e 进入编辑器后加上下面这句

0 6,18 * * * /alidata/scripts/db_backup.sh >> /alidata/backup/backup.log 2>&1

保存退出,今后服务器会在每天早上六点和晚上六点各备份一次数据库。

更进一步,你可以在电脑上创建一个脚本,每天手动运行一次,增量同步服务器上的备份文件。

touch backup.sh && vi backup.sh

#!/bin/sh
SERVER_USER='root' # 修改为服务器用户名
SERVER_IP='127.0.0.1' # 修改为服务器 IP 地址
SERVER_PATH='/alidata/backup' # 修改为服务器上存放备份的目录
rsync -avz -e ssh ${SERVER_USER}@${SERVER_IP}:${SERVER_PATH} ~/downloads

sh backup.sh

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment