#!/bin/bash # 一些配置 DROPBOX_DIR=/$(date +%Y-%m-%d) # Dropbox 目录,根目录 / 是你已经创建的 app 目录 MONGO_USER="用户名" MONGO_PASS="密码" MONGO_DB="数据库名" LEANOTE_DATA_FILE_PATH=/root/leanote/leanote # command prefix to minimize resource usage #CMD_PREFIX="nice -n19 ionice -c3 nocache" CMD_PREFIX="" #"ionice -c3 nocache" #临时目录 TEMP_PATH=/root/leanote/autoBackup/temp/ DB_DUMP_TEMP_PATH=/root/leanote/autoBackup/temp/db #可执行文件路径 MONGO_DUMP_EXE=/root/leanote/mongodb-3.6.2/mongodump DROPBOX_UPLOADER=/root/leanote/autoBackup/dropbox_uploader.sh # 定义备份文件名 DataBakName=DB_$(date +"%Y-%m-%d").tar.bz2 FileBakName=File_$(date +%Y-%m-%d).tar.bz2 # Dropbox 里 90 天以上的旧数据可以清除 Old_DROPBOX_DIR=/$(date -d -90day +%Y-%m-%d) # 导出 Mongo 数据库,并压缩 echo -ne "Dump database..." $CMD_PREFIX $MONGO_DUMP_EXE -d $MONGO_DB -u $MONGO_USER -p $MONGO_PASS --gzip -o $DB_DUMP_TEMP_PATH $CMD_PREFIX tar -cjf $TEMP_PATH/$DataBakName $DB_DUMP_TEMP_PATH/$MONGO_DB rm -rf $DB_DUMP_TEMP_PATH/* echo -e "Done" # 备份附件等文件 echo -ne "Backup Leanote files..." $CMD_PREFIX tar -cjf $TEMP_PATH/$FileBakName $LEANOTE_DATA_FILE_PATH echo -e "Done" # 开始上传到 Dropbox echo -e "Start uploading..." $CMD_PREFIX $DROPBOX_UPLOADER upload $TEMP_PATH/$DataBakName $DROPBOX_DIR/$DataBakName $CMD_PREFIX $DROPBOX_UPLOADER upload $TEMP_PATH/$FileBakName $DROPBOX_DIR/$WebBakName # 清理 Dropbox 里 90 天前的旧数据 CurrentDate=$(date +%d) if [ "$CurrentDate" -ne "15" ]; then echo -e "Deleting old data..." $CMD_PREFIX $DROPBOX_UPLOADER delete $Old_DROPBOX_DIR/ else echo -e "I won't deleted old data today!" fi #清理本地文件 $CMD_PREFIX rm -rf $TEMP_PATH/* echo -e "All done."