第一步,创建一个存放备份的文件夹:
比如 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
我将其保存为 /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
不错,好用。补充几个 shell 细节。
tar打包是尽量使用相对路径。
打包完成后,清理备份目录
crontab 中管道用 >> 可以记录下所有的日志,> 只记录最后一条日志。