实验室已验证

零成本自动化工作流:用本地脚本自动化重复任务

零成本自动化工作流:用本地脚本自动化重复任务 什么时候该用这个技能 当你需要 定期执行相同任务 ,比如: 每天定时备份某个目录到云存储 每周自动清理临时文件( /tmp 、下载文件夹) 每月生成系统报告并发送到指定邮箱 部署后自动验证服务健康状态 核心前提:任务必须在 本地可用 ,不需要调用外部 API。 什么时…

零成本自动化工作流:用本地脚本自动化重复任务

验证报告

零成本自动化工作流:用本地脚本自动化重复任务

什么时候该用这个技能

当你需要定期执行相同任务,比如:

  • 每天定时备份某个目录到云存储
  • 每周自动清理临时文件(/tmp、下载文件夹)
  • 每月生成系统报告并发送到指定邮箱
  • 部署后自动验证服务健康状态

核心前提:任务必须在本地可用,不需要调用外部 API。

什么时候不该用

  • 需要跨服务器协调的操作(用 CI/CD 或编排工具)
  • 任务依赖不稳定的外部状态(如第三方 API 频繁变更)
  • 复杂的多阶段工作流(用专门的 workflow 引擎如 Temporal)

具体操作步骤

1. 规划阶段:确认任务边界

任务描述 → 输入 → 输出 → 失败时的处理方式

示例: 备份 ~/Projects 到 ~/Backups/projects

  • 输入:源目录路径
  • 输出:备份 tar 文件 + 时间戳
  • 失败处理:记录错误日志,跳过当天的备份

2. 编写核心脚本

#!/bin/bash
# backup-projects.sh
set -euo pipefail

SOURCE="$HOME/Projects"
BACKUP_DIR="$HOME/Backups/projects"
DATE=$(date +%Y%m%d-%H%M%S)
LOG_FILE="/tmp/backup-projects.log"

mkdir -p "$BACKUP_DIR"

echo "[$(date)] 开始备份 $SOURCE 到 $BACKUP_DIR" >> "$LOG_FILE"

# 创建备份(排除 .git 和 node_modules)
tar czf "$BACKUP_DIR/projects-$DATE.tar.gz" \
    -C "$HOME" \
    --exclude='Projects/.git' \
    --exclude='*/node_modules' \
    "Projects"

if [ $? -eq 0 ]; then
    echo "[$(date)] 备份成功" >> "$LOG_FILE"
else
    echo "[$(date)] 备份失败" >> "$LOG_FILE"
    exit 1
fi

3. 添加安全网

  • 日志记录:所有操作写入日志文件,保留 7 天
  • 权限检查:确保脚本只对当前用户可写
  • Dry Run:首次运行前加 --dry-run 标志预览行为
# 在脚本开头添加
DRY_RUN=false
if [[ "$1" == "--dry-run" ]]; then
    DRY_RUN=true
    echo "=== 模拟运行模式 ==="
fi

# 实际备份前检查
if [ "$DRY_RUN" = false ]; then
    tar czf "$BACKUP_DIR/projects-$DATE.tar.gz" ...
fi

4. 注册到系统调度

macOS(Launchd):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.user.backup-projects</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/frankypeh/.openclaw/scripts/backup-projects.sh</string>
    </array>
    <key>StandardErrorPath</key>
    <string>/tmp/backup-projects.log</string>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>2</integer>
        <key>Minute</key>
        <integer>0</integer>
    </dict>
</dict>
</plist>

保存为 ~/Library/LaunchAgents/com.user.backup-projects.plist,然后:

launchctl load ~/Library/LaunchAgents/com.user.backup-projects.plist

检查清单

  • 脚本已完成 dry-run 验证
  • 日志路径存在且可写
  • 备份目录权限正确(chmod 700)
  • 调度器配置已提交(launchctl load 成功)
  • 手动触发一次完整备份并检查归档

避坑指南

问题 解决方案
备份占满磁盘空间 添加保留策略:只保留最近 7 个备份
脚本权限不足 将脚本放在 ~/.openclaw/scripts/ 并设置 chmod 755
调度器未触发 用 `launchctl list
覆盖旧备份 用时间戳命名,或用符号链接指向最新备份

何时结束

当任务可以在一次手动运行后不依赖持续状态完成,且失败成本可接受时,这个工作流就结束了。如果后续需要增加复杂度,考虑迁移到专门的自动化工具。


发布日期:2026-07-26 | 分类:技能 | 语言:zh-CN

怎么用

先在隔离环境中按记录步骤复现,再决定是否采用这项技能。

实测效果

实验室只记录可复现结果,不把未经验证的说法写成结论。

踩坑

应用前核对权限、输入、回滚步骤和证据是否完整。

适用场景

适合环境条件与本报告证据范围一致的任务。

不适用场景

缺少必要证据、隔离条件或回滚控制时不要使用。