#!/bin/bash # ============================================================================ # 程序名称: novel-sync.sh # ============================================================================ # 功能描述: 平安书章节同步模块,自动同步章节文件、检查报告、反思记录到共享文件夹 # ============================================================================ # 设计目的: # 1. 同步章节文件到共享文件夹 # 2. 同步检查报告到共享文件夹 # 3. 同步反思记录到共享文件夹 # 4. 创建远程目录结构 # 5. 验证同步结果 # ============================================================================ # 输入参数: # $1: 章节文件名(可选,默认同步最新章节) # ============================================================================ # 输出: # 标准输出: 同步进度和结果 # ============================================================================ # 依赖: # - smbclient # - /root/.openclaw/workspace/平安书 目录 # - 共享文件夹: //192.168.0.99/temp1/doc/平安书 # ============================================================================ # 作者: 青龙 (OpenClaw AI) # 创建时间: 2026-02-13 # 更新: 2026-02-15 v1.2 修复反思记录同步 # ============================================================================ SHARE_DIR="//192.168.0.99/temp1" REMOTE_DIR="doc/平安书" LOCAL_DIR="/root/.openclaw/workspace/平安书" REPORT_DIR="$LOCAL_DIR/报告" REFLECTION_DIR="$LOCAL_DIR/反思记录" TIMESTAMP=$(date '+%Y-%m-%d %H:%M') # ============================================================================ # 同步函数 # ============================================================================ sync_chapter() { local chapter="$1" local chapter_name=$(basename "$chapter") local base_name=$(basename "$chapter" .txt) local report="${chapter%.txt}-检查报告.md" local reflection="${REFLECTION_DIR}/${base_name}-反思.md" echo "╔════════════════════════════════════════════════════╗" echo "║ 平安书章节同步模块 v1.2 ║" echo "╚════════════════════════════════════════════════════╝" echo "" # 检查章节文件是否存在 if [ ! -f "$chapter" ]; then echo "❌ 错误:章节文件不存在: $chapter" return 1 fi echo "📤 同步章节: $chapter_name" echo "📁 目标: $SHARE_DIR/$REMOTE_DIR/" echo "" # 创建远程目录 smbclient "$SHARE_DIR" -N -c "mkdir $REMOTE_DIR" 2>/dev/null smbclient "$SHARE_DIR" -N -c "mkdir $REMOTE_DIR/报告" 2>/dev/null smbclient "$SHARE_DIR" -N -c "mkdir $REMOTE_DIR/反思记录" 2>/dev/null # 1. 同步章节文件 echo "1. 同步章节文件..." smbclient "$SHARE_DIR" -N -c "put $chapter $REMOTE_DIR/$chapter_name" 2>/dev/null if [ $? -eq 0 ]; then echo " ✅ 章节已同步" else echo " ❌ 章节同步失败" return 1 fi # 2. 同步检查报告 if [ -f "$report" ]; then echo "" echo "2. 同步检查报告..." local report_name=$(basename "$report") smbclient "$SHARE_DIR" -N -c "put $report $REMOTE_DIR/报告/$report_name" 2>/dev/null if [ $? -eq 0 ]; then echo " ✅ 报告已同步" else echo " ⚠️ 报告同步失败(章节已成功)" fi else echo "" echo " ℹ️ 无检查报告" fi # 3. 同步反思记录 if [ -f "$reflection" ]; then echo "" echo "3. 同步反思记录..." local reflection_name=$(basename "$reflection") smbclient "$SHARE_DIR" -N -c "put $reflection $REMOTE_DIR/反思记录/$reflection_name" 2>/dev/null if [ $? -eq 0 ]; then echo " ✅ 反思已同步" else echo " ⚠️ 反思同步失败(章节已成功)" fi else echo "" echo " ℹ️ 无反思记录" fi echo "" echo "📋 同步完成,状态:待发表" echo "📝 请手动发表后,通知我标记为「已发表」" return 0 } # ============================================================================ # 同步所有报告(反思、检查、进度) # ============================================================================ sync_all_reports() { echo "╔════════════════════════════════════════════════════╗" echo "║ 报告同步模块 v1.0 ║" echo "╚════════════════════════════════════════════════════════════╝" echo "" # 创建远程目录 smbclient "$SHARE_DIR" -N -c "mkdir $REMOTE_DIR/报告" 2>/dev/null smbclient "$SHARE_DIR" -N -c "mkdir $REMOTE_DIR/反思记录" 2>/dev/null smbclient "$SHARE_DIR" -N -c "mkdir $REMOTE_DIR/进度追踪" 2>/dev/null # 同步检查报告 echo "📄 同步检查报告..." local report_count=0 for report in "$REPORT_DIR"/*.md; do if [ -f "$report" ]; then local name=$(basename "$report") smbclient "$SHARE_DIR" -N -c "put $report $REMOTE_DIR/报告/$name" 2>/dev/null if [ $? -eq 0 ]; then report_count=$((report_count + 1)) fi fi done echo " ✅ 同步 $report_count 个检查报告" # 同步反思记录 echo "" echo "🧠 同步反思记录..." local reflection_count=0 for reflection in "$REFLECTION_DIR"/*.md; do if [ -f "$reflection" ]; then local name=$(basename "$reflection") smbclient "$SHARE_DIR" -N -c "put $reflection $REMOTE_DIR/反思记录/$name" 2>/dev/null if [ $? -eq 0 ]; then reflection_count=$((reflection_count + 1)) fi fi done echo " ✅ 同步 $reflection_count 个反思记录" # 同步进度报告 echo "" echo "📈 同步进度追踪..." local progress_count=0 for progress in "$LOCAL_DIR/进度追踪"/*.md; do if [ -f "$progress" ]; then local name=$(basename "$progress") smbclient "$SHARE_DIR" -N -c "put $progress $REMOTE_DIR/进度追踪/$name" 2>/dev/null if [ $? -eq 0 ]; then progress_count=$((progress_count + 1)) fi fi done echo " ✅ 同步 $progress_count 个进度报告" echo "" echo "✅ 报告同步完成" } # ============================================================================ # 主程序 # ============================================================================ main() { case "${1:-chapter}" in chapter) if [ -z "$2" ]; then # 默认同步最新章节 local latest=$(ls -t "$LOCAL_DIR"/第*章_*.txt 2>/dev/null | head -1) if [ -z "$latest" ]; then echo "ℹ️ 未发现章节文件" exit 1 fi sync_chapter "$latest" else sync_chapter "$LOCAL_DIR/$2" fi ;; all) sync_all_reports ;; help|--help|-h) echo "用法: $0 {chapter [章节名]|all|help}" echo "" echo "命令:" echo " chapter [章节名] 同步章节(默认最新)" echo " all 同步所有报告" echo " help 显示帮助" ;; *) echo "未知命令: $1" echo "使用: $0 help 查看帮助" ;; esac } main "$@"