DMS系统创建本地备份机制

作者:admin 日期:2025年11月15日
一、在服务器(dms.rongyi.site)上创建同步用户 useradd -m syncer passwd syncer 配置只读备份目录权限: chown -R syncer:syncer /bak chmod -R 755 /bak 二、在本地 Debian 生成 SSH 密钥 ssh-keygen -t ed25519 -C "backup" 上传公钥到服务器: ssh-copy-id syncer@dms.rongyi.site 测试免密登录: ssh syncer@dms.rongyi.site 三、创建 rsync 同步脚本 #!/bin/bash REMOTE_USER="syncer" REMOTE_HOST="dms.rongyi.site" REMOTE_DIR="/bak" LOCAL_DIR="/root/dms_backups" LOG="/root/log/sync_dms_backup.log" EXCLUDES=( --exclude='flask_session' ) RETENTION_DAYS=7 SERVERCHAN_SENDKEY="SCTxxxxxxxxxxxx" # ============ 双输出日志函数 ============ log(){ echo -e "$1" | tee -a "$LOG" } # ============ Server 酱通知 ============ push_message(){ TITLE="$1" CONTENT="$2" curl -s -X POST "https://sctapi.ftqq.com/${SERVERCHAN_SENDKEY}.send" \ -d "title=${TITLE}" \ -d "desp=${CONTENT}" >/dev/null 2>&1 } # ============ 开始 ============ log "====== $(date '+%Y-%m-%d %H:%M:%S') 开始增量同步 ======" START_TIME=$(date +%s) # -------- 1) rsync 增量同步 -------- log "[*] 开始同步远程备份目录..." rsync -avz --delete \ "${EXCLUDES[@]}" \ $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/ \ $LOCAL_DIR/ 2>&1 | tee -a "$LOG" RSYNC_STATUS=${PIPESTATUS[0]} if [ $RSYNC_STATUS -eq 0 ]; then log "[OK] $(date '+%H:%M:%S') 数据同步成功" else log "[ERROR] $(date '+%H:%M:%S') 数据同步失败!错误代码:$RSYNC_STATUS" push_message \ "❌ DMS 本地备份同步失败" \ "失败时间:$(date '+%Y-%m-%d %H:%M:%S') 错误代码:$RSYNC_STATUS 请检查网络、SSH 或服务器目录是否正常。" exit 1 fi # -------- 2) 清理过期备份 -------- log "[*] 清理超过 $RETENTION_DAYS 天的本地备份..." find $LOCAL_DIR -maxdepth 1 -type d -name "day_*" -mtime +$RETENTION_DAYS \ -print -exec rm -rf {} \; 2>&1 | tee -a "$LOG" CLEAN_STATUS=${PIPESTATUS[0]} if [ $CLEAN_STATUS -ne 0 ]; then log "[ERROR] 清理旧备份失败!" push_message \ "⚠️ DMS 同步成功,但清理旧备份失败" \ "请检查本地目录权限或磁盘空间。" exit 1 fi END_TIME=$(date +%s) RUN_SECONDS=$((END_TIME - START_TIME)) # -------- 3) 成功通知 -------- log "[OK] $(date '+%H:%M:%S') 同步与清理全部完成" push_message \ "✅ DMS 本地同步备份成功" \ "完成时间:$(date '+%Y-%m-%d %H:%M:%S') 耗时:${RUN_SECONDS} 秒 排除目录:flask_session 保留天数:$RETENTION_DAYS 本地路径:\`${LOCAL_DIR}\` 状态:全部成功。" log "" 保存为 dms.sh 赋予执行权限 chmod +x dms.sh 四、手动运行测试 ./dms.sh 五、设置计划任务 crontab -e 0 1 * * * /root/dms.sh
← 上一篇:DMS设备管理系统-配置脚本 下一篇:监控 debian linux 服务器流量脚本 →