每日备份 2026-06-10 12:57:13

This commit is contained in:
root-backup committed 2026-06-10 12:57:14 +08:00
1 parent fda2ccb8c2
commit 3d2e638c6a
244 files changed
+58890 -3

No files matched your search

+218
View File
@@ -0,0 +1,218 @@
#!/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 "$@"