自动同步: 2026-05-10 02:10
This commit is contained in:
@@ -1,21 +1,22 @@
|
||||
#!/bin/bash
|
||||
# 每日回顾整理脚本
|
||||
# 流程:NAS pull → 整理任务 → Git commit/push → NAS sync
|
||||
# ~/work/zq 是 rclone mount 挂载点,直接读写即可,禁止 rclone sync
|
||||
# 无需 git 操作,挂载点会自动同步到 NAS
|
||||
|
||||
set -e
|
||||
|
||||
WORK_DIR="/home/starmen1265/work/zq"
|
||||
TODO_FILE="$WORK_DIR/01.待办/TODO.md"
|
||||
REVIEW_DIR="$WORK_DIR/40.归档/每日回顾"
|
||||
LOG_FILE="$HOME/work/backup/daily-review.log"
|
||||
LOG_FILE="$HOME/.openclaw/cron/logs/daily-review.log"
|
||||
|
||||
# 获取昨天的日期(格式:YYYY-MM-DD)
|
||||
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
|
||||
REVIEW_FILE="$REVIEW_DIR/$YESTERDAY.md"
|
||||
|
||||
# 确保日志目录存在
|
||||
mkdir -p "$(dirname "$LOG_FILE")"
|
||||
# 确保目录存在
|
||||
mkdir -p "$REVIEW_DIR"
|
||||
mkdir -p "$(dirname "$LOG_FILE")"
|
||||
|
||||
log() {
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
|
||||
@@ -24,15 +25,11 @@ log() {
|
||||
log "=== 每日回顾整理开始 ==="
|
||||
log "处理日期: $YESTERDAY"
|
||||
|
||||
# 切换到工作目录
|
||||
cd "$WORK_DIR"
|
||||
|
||||
# 1. 先从 NAS 拉取最新内容
|
||||
log "1. 从 NAS 拉取更新..."
|
||||
rclone sync "nas-webdav:/home/Drive/工作区/张青/工作区/" "$WORK_DIR/" \
|
||||
--exclude ".git/" \
|
||||
--exclude ".gitignore" \
|
||||
--log-level INFO >> "$LOG_FILE" 2>&1
|
||||
# 检查 TODO 文件是否存在且可读
|
||||
if [ ! -f "$TODO_FILE" ]; then
|
||||
log "TODO 文件不存在,跳过"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# 如果没有已完成的任务,直接退出
|
||||
if ! grep -q "\[x\]" "$TODO_FILE"; then
|
||||
@@ -40,10 +37,9 @@ if ! grep -q "\[x\]" "$TODO_FILE"; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
log "2. 发现已完成的任务,开始整理..."
|
||||
log "1. 发现已完成的任务,开始整理..."
|
||||
|
||||
# 提取已完成的任务(保留标题结构)
|
||||
# 读取TODO.md,提取所有包含[x]的行及其所属标题
|
||||
COMPLETED_TASKS=$(awk '
|
||||
/^#/ { current_section = $0 }
|
||||
/\[x\]/ {
|
||||
@@ -55,20 +51,16 @@ COMPLETED_TASKS=$(awk '
|
||||
}
|
||||
' "$TODO_FILE")
|
||||
|
||||
# 如果每日回顾文件不存在,创建它
|
||||
if [ ! -f "$REVIEW_FILE" ]; then
|
||||
touch "$REVIEW_FILE"
|
||||
log "创建每日回顾文件: $REVIEW_FILE"
|
||||
fi
|
||||
|
||||
# 将完成的任务追加到每日回顾文件(去掉✅及后面的日期)
|
||||
# 创建每日回顾文件并写入
|
||||
log "2. 写入每日回顾: $REVIEW_FILE"
|
||||
echo "$COMPLETED_TASKS" | sed 's/ ✅ [0-9-]*$//' >> "$REVIEW_FILE"
|
||||
log "已添加任务到每日回顾"
|
||||
|
||||
# 从TODO.md中删除已完成的任务行
|
||||
sed -i '/\[x\]/d' "$TODO_FILE"
|
||||
# 从 TODO.md 中删除已完成的任务行(使用临时文件避免 sed -i 在挂载点的问题)
|
||||
log "3. 清理 TODO.md 中的已完成任务..."
|
||||
TEMP_FILE=$(mktemp)
|
||||
grep -v '\[x\]' "$TODO_FILE" > "$TEMP_FILE"
|
||||
|
||||
# 清理TODO.md中的空标题(标题下没有任务的情况)
|
||||
# 清理空标题段(标题下没有非空行的)
|
||||
awk '
|
||||
/^#/ {
|
||||
if (section_content != "") {
|
||||
@@ -88,20 +80,13 @@ awk '
|
||||
print section_content
|
||||
}
|
||||
}
|
||||
' "$TODO_FILE" > "$TODO_FILE.tmp" && mv "$TODO_FILE.tmp" "$TODO_FILE"
|
||||
' "$TEMP_FILE" > "$TEMP_FILE.cleaned"
|
||||
|
||||
# 3. 提交并推送到 Gitea
|
||||
log "3. 提交并推送到 Gitea..."
|
||||
git add "$TODO_FILE" "$REVIEW_FILE"
|
||||
git commit -m "每日回顾整理:$YESTERDAY" >> "$LOG_FILE" 2>&1 || log "Git提交无变更"
|
||||
git push origin main >> "$LOG_FILE" 2>&1 || log "警告:Git推送失败"
|
||||
|
||||
# 4. 全量同步回 NAS
|
||||
log "4. 同步回 NAS..."
|
||||
rclone sync "$WORK_DIR/" "nas-webdav:/home/Drive/工作区/张青/工作区/" \
|
||||
--exclude ".git/" \
|
||||
--exclude ".gitignore" \
|
||||
--log-level INFO >> "$LOG_FILE" 2>&1 || log "警告:rclone 推送失败"
|
||||
# 原子替换
|
||||
cat "$TEMP_FILE.cleaned" > "$TODO_FILE"
|
||||
rm -f "$TEMP_FILE" "$TEMP_FILE.cleaned"
|
||||
|
||||
# 挂载点自动同步,无需 rclone sync 或 git push
|
||||
log "4. 挂载点自动同步到 NAS,无需手动操作"
|
||||
log "=== 每日回顾整理完成 ==="
|
||||
echo "Daily review completed for $YESTERDAY"
|
||||
|
||||
Reference in New Issue
Block a user