# 替换 desktop_user 和台式机 IP ssh-copy-id -i C:\Users\wddsh\.ssh\id_ed25519.pub wdd@192.168.1.194 # 或手动追加(ssh-copy-id 若不可用) cat C:\Users\wddsh\.ssh\id_ed25519.pub | ssh wdd@192.168.1.194 \ "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" # 验证免密登录 ssh -i C:\Users\wddsh\.ssh\id_ed25519 wdd@192.168.1.194 "echo SSH OK" cat >> C:\Users\wddsh\.ssh\config << 'EOF' Host wdd-pink-station HostName 192.168.1.194 User wdd IdentityFile C:\Users\wddsh\.ssh\id_ed25519 ServerAliveInterval 60 ServerAliveCountMax 3 EOF chmod 600 ~/.ssh/config # 验证简写连接 ssh wdd-pink-station "echo Connected" #!/usr/bin/env bash set -euo pipefail # ── 配置区 ──────────────────────────────────────────────── SRC="/c/Users/wddsh/Documents/xwechat_files" REMOTE_HOST="wdd-pink-station" # 对应 ~/.ssh/config 中的 Host REMOTE_DST="/c/Users/wdd/wechat_files/xwechat_files" LOG_DIR="/c/Users/wddsh/wechat_backup/logs" LOG_FILE="${LOG_DIR}/wechat_sync_$(date +%Y%m%d).log" # ───────────────────────────────────────────────────────── mkdir -p "$LOG_DIR" log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "$LOG_FILE" } log "======== 微信数据同步开始 ========" # ── 检测微信是否运行 ────────────────────────────────────── if tasklist.exe 2>/dev/null | grep -qi "Weixin.exe"; then log "警告:微信正在运行,跳过 db_storage(数据库锁定中)" EXCLUDE_DB="--exclude=db_storage/" else log "微信未运行,全量同步数据库" EXCLUDE_DB="" fi # ── rsync 同步 ──────────────────────────────────────────── rsync -avz \ --progress \ --partial \ --delete \ --exclude="temp/" \ --exclude="cache/" \ --exclude="apm_record/" \ --exclude="*.lock" \ ${EXCLUDE_DB} \ -e "ssh -F ~/.ssh/config" \ "${SRC}/" \ "${REMOTE_HOST}:${REMOTE_DST}/" \ 2>&1 | tee -a "$LOG_FILE" EXIT_CODE=${PIPESTATUS[0]} if [ $EXIT_CODE -eq 0 ]; then log "同步成功完成 ✓" else log "同步失败,rsync 退出码: $EXIT_CODE" fi # ── 清理 30 天前日志 ────────────────────────────────────── find "$LOG_DIR" -name "wechat_sync_*.log" -mtime +30 -delete 2>/dev/null log "======== 同步结束 ========"