實驗室已驗證

零成本自動化工作流程:用本機指令碼自動化重複性工作

零成本自動化工作流程:用本機指令碼自動化重複性工作 什麼時候該使用這項技能 當你需要 定期執行相同的工作 ,例如: 每天定時將特定目錄備份到雲端儲存空間 每週自動清理暫存檔案( /tmp 、下載資料夾) 每月產生系統報告並寄送到指定電子郵件信箱 部署後自動驗證服務的健康狀態 核心前提:工作必須在 本機可用 ,不需…

零成本自動化工作流程:用本機指令碼自動化重複性工作

驗證報告

零成本自動化工作流程:用本機指令碼自動化重複性工作

什麼時候該使用這項技能

當你需要定期執行相同的工作,例如:

  • 每天定時將特定目錄備份到雲端儲存空間
  • 每週自動清理暫存檔案(/tmp、下載資料夾)
  • 每月產生系統報告並寄送到指定電子郵件信箱
  • 部署後自動驗證服務的健康狀態

核心前提:工作必須在本機可用,不需要呼叫外部 API。

什麼時候不該使用

  • 需要跨伺服器協調的操作(使用 CI/CD 或編排工具)
  • 工作依賴不穩定的外部狀態(如第三方 API 頻繁變更)
  • 複雜的多階段工作流程(使用專門的工作流程引擎,如 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

怎麼用

先在隔離環境中按記錄步驟重現,再決定是否採用這項技能。

實測效果

實驗室只記錄可重現結果,不把未經驗證的說法寫成結論。

踩坑

套用前核對權限、輸入、回復步驟和證據是否完整。

適用場景

適合環境條件與本報告證據範圍一致的任務。

不適用場景

缺少必要證據、隔離條件或回復控制時不要使用。