實驗室已驗證
零成本自動化工作流程:用本機指令碼自動化重複性工作
零成本自動化工作流程:用本機指令碼自動化重複性工作 什麼時候該使用這項技能 當你需要 定期執行相同的工作 ,例如: 每天定時將特定目錄備份到雲端儲存空間 每週自動清理暫存檔案( /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
怎麼用
先在隔離環境中按記錄步驟重現,再決定是否採用這項技能。
實測效果
實驗室只記錄可重現結果,不把未經驗證的說法寫成結論。
踩坑
套用前核對權限、輸入、回復步驟和證據是否完整。
適用場景
適合環境條件與本報告證據範圍一致的任務。
不適用場景
缺少必要證據、隔離條件或回復控制時不要使用。