Get the FREE Ultimate OpenClaw Setup Guide →
npx machina-cli add skill chaterm/terminal-skills/backup-strategy --openclaw
Files (1)
SKILL.md
4.3 KB

备份策略设计

概述

3-2-1 策略、备份验证、保留策略设计技能。

3-2-1 备份策略

核心原则

3 - 至少保留 3 份数据副本
2 - 存储在 2 种不同介质上
1 - 至少 1 份异地存储

扩展 3-2-1-1-0:
3 份副本
2 种介质
1 份异地
1 份离线/不可变
0 个错误(验证通过)

实施示例

# 本地备份(副本 1)
tar -czvf /backup/local/data_$(date +%Y%m%d).tar.gz /data

# NAS 备份(副本 2,不同介质)
rsync -avz /backup/local/ nas:/backup/

# 云备份(副本 3,异地)
aws s3 sync /backup/local/ s3://backup-bucket/

备份类型

完整备份

# 每周完整备份
tar -czvf /backup/full_$(date +%Y%m%d).tar.gz /data

增量备份

# 基于时间戳
tar -czvf /backup/incr_$(date +%Y%m%d).tar.gz \
    --newer-mtime="1 day ago" /data

# 基于快照文件
tar -czvf /backup/incr.tar.gz -g /backup/snapshot.snar /data

差异备份

# 基于完整备份时间
tar -czvf /backup/diff_$(date +%Y%m%d).tar.gz \
    --newer-mtime="$(cat /backup/last_full_date)" /data

保留策略

GFS 策略

# Grandfather-Father-Son
# 日备份:保留 7 天
# 周备份:保留 4 周
# 月备份:保留 12 个月
# 年备份:保留 7 年

#!/bin/bash
BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d)
DOW=$(date +%u)  # 1-7
DOM=$(date +%d)  # 01-31

# 日备份
tar -czvf ${BACKUP_DIR}/daily/backup_${DATE}.tar.gz /data

# 周备份(周日)
if [ "$DOW" -eq 7 ]; then
    cp ${BACKUP_DIR}/daily/backup_${DATE}.tar.gz ${BACKUP_DIR}/weekly/
fi

# 月备份(1号)
if [ "$DOM" -eq "01" ]; then
    cp ${BACKUP_DIR}/daily/backup_${DATE}.tar.gz ${BACKUP_DIR}/monthly/
fi

# 清理
find ${BACKUP_DIR}/daily -mtime +7 -delete
find ${BACKUP_DIR}/weekly -mtime +28 -delete
find ${BACKUP_DIR}/monthly -mtime +365 -delete

滚动保留

#!/bin/bash
# 保留最近 N 个备份
BACKUP_DIR="/backup"
KEEP=10

ls -1t ${BACKUP_DIR}/*.tar.gz | tail -n +$((KEEP+1)) | xargs -r rm

备份验证

完整性检查

# 校验和验证
md5sum backup.tar.gz > backup.md5
md5sum -c backup.md5

# tar 测试
tar -tzvf backup.tar.gz > /dev/null

# gzip 测试
gzip -t backup.tar.gz

恢复测试

#!/bin/bash
# 定期恢复测试
TEST_DIR="/tmp/restore_test"
mkdir -p $TEST_DIR

# 解压测试
tar -xzvf /backup/latest.tar.gz -C $TEST_DIR

# 验证文件数量
ORIG_COUNT=$(find /data -type f | wc -l)
REST_COUNT=$(find $TEST_DIR -type f | wc -l)

if [ "$ORIG_COUNT" -eq "$REST_COUNT" ]; then
    echo "验证通过"
else
    echo "验证失败:文件数量不匹配"
fi

rm -rf $TEST_DIR

常见场景

场景 1:企业备份方案

#!/bin/bash
# 综合备份脚本
CONFIG="/etc/backup/config"
LOG="/var/log/backup.log"

log() { echo "$(date '+%Y-%m-%d %H:%M:%S') $1" >> $LOG; }

# 数据库备份
log "开始数据库备份"
mysqldump --all-databases | gzip > /backup/db_$(date +%Y%m%d).sql.gz

# 文件备份
log "开始文件备份"
tar -czvf /backup/files_$(date +%Y%m%d).tar.gz /data

# 同步到 NAS
log "同步到 NAS"
rsync -avz /backup/ nas:/backup/

# 上传到云
log "上传到云存储"
aws s3 sync /backup/ s3://backup-bucket/

# 验证
log "验证备份"
gzip -t /backup/*.gz

# 清理
log "清理旧备份"
find /backup -mtime +7 -delete

log "备份完成"

场景 2:备份监控

#!/bin/bash
# 检查备份状态
BACKUP_DIR="/backup"
MAX_AGE=86400  # 24小时

LATEST=$(ls -1t ${BACKUP_DIR}/*.tar.gz 2>/dev/null | head -1)

if [ -z "$LATEST" ]; then
    echo "CRITICAL: 无备份文件"
    exit 2
fi

AGE=$(($(date +%s) - $(stat -c %Y "$LATEST")))

if [ $AGE -gt $MAX_AGE ]; then
    echo "WARNING: 备份超过 24 小时"
    exit 1
fi

echo "OK: 最新备份 $(basename $LATEST)"
exit 0

策略对比

策略存储空间恢复速度复杂度
完整
增量
差异
GFS

最佳实践

1. 自动化备份,避免人工遗漏
2. 定期验证备份可恢复性
3. 加密敏感数据备份
4. 监控备份状态和空间
5. 文档化恢复流程
6. 定期演练恢复过程

Source

git clone https://github.com/chaterm/terminal-skills/blob/main/backup/backup-strategy/SKILL.mdView on GitHub

Overview

本技能覆盖 3-2-1 备份法、备份验证与保留策略设计。通过示例与脚本实现本地、NAS 与云端多副本备份,以及滚动保留与验证恢复流程,提升数据可恢复性。

How This Skill Works

核心原则是至少 3 份数据副本、2 种介质、1 份异地,扩展为 3-2-1-1-0(附加 1 份离线/不可变备份、0 个错误通过验证)。通过 tar、rsync、aws s3 等工具实现本地、NAS 与云端的分层备份,结合完整/增量/差异备份以及定期校验和恢复测试来确保数据的一致性与可恢复性。

When to Use It

  • 需要实现跨地点冗余的企业级备份方案
  • 需要异地备份、离线或不可变备份以满足合规要求
  • 需要定期验证备份的完整性与可恢复性
  • 需要比较不同备份类型(完整/增量/差异)的恢复速度与存储成本
  • 需要设定长期保留策略(日/周/月/年)并支持快速恢复

Quick Start

  1. Step 1: 设计并确认 3-2-1-1-0 策略及保留窗口
  2. Step 2: 实现本地/ NAS/ 云端备份并创建相应脚本
  3. Step 3: 设置备份校验与定期的恢复测试

Best Practices

  • 自动化备份,避免人工遗漏
  • 定期验证备份可恢复性
  • 加密敏感数据备份
  • 监控备份状态和可用空间
  • 定期演练恢复过程

Example Use Cases

  • 本地备份:将数据打包到 /backup/local,作为副本 1
  • NAS 备份:从本地备份同步到 NAS,形成副本 2
  • 云端备份:将本地备份同步到云存储(如 S3)形成副本 3
  • 使用 GFS 与滚动保留的实现:日/周/月/年的保留策略示例
  • 完整/增量/差异备份的实现示例:tar、--newer-mtime、snar 等用法

Frequently Asked Questions

Add this skill to your agents

Related Skills

maintenance

chaterm/terminal-skills

OpenClaw 运维与故障修复

SEO Plan

openclaw/skills

Strategic SEO planning for new or existing websites. Industry-specific templates, competitive analysis, content strategy, and implementation roadmap.

cloud-backup

chaterm/terminal-skills

云备份方案

content-strategy

coreyhaines31/marketingskills

When the user wants to plan a content strategy, decide what content to create, or figure out what topics to cover. Also use when the user mentions "content strategy," "what should I write about," "content ideas," "blog strategy," "topic clusters," "content planning," "editorial calendar," "content marketing," "content roadmap," "what content should I create," "blog topics," "content pillars," or "I don't know what to write." Use this whenever someone needs help deciding what content to produce, not just writing it. For writing individual pieces, see copywriting. For SEO-specific audits, see seo-audit. For social media content specifically, see social-content.

marketing-ideas

coreyhaines31/marketingskills

When the user needs marketing ideas, inspiration, or strategies for their SaaS or software product. Also use when the user asks for 'marketing ideas,' 'growth ideas,' 'how to market,' 'marketing strategies,' 'marketing tactics,' 'ways to promote,' 'ideas to grow,' 'what else can I try,' 'I don't know how to market this,' 'brainstorm marketing,' or 'what marketing should I do.' Use this as a starting point whenever someone is stuck or looking for inspiration on how to grow. For specific channel execution, see the relevant skill (paid-ads, social-content, email-sequence, etc.).

pricing-strategy

coreyhaines31/marketingskills

When the user wants help with pricing decisions, packaging, or monetization strategy. Also use when the user mentions 'pricing,' 'pricing tiers,' 'freemium,' 'free trial,' 'packaging,' 'price increase,' 'value metric,' 'Van Westendorp,' 'willingness to pay,' 'monetization,' 'how much should I charge,' 'my pricing is wrong,' 'pricing page,' 'annual vs monthly,' 'per seat pricing,' or 'should I offer a free plan.' Use this whenever someone is figuring out what to charge or how to structure their plans. For in-app upgrade screens, see paywall-upgrade-cro.

Sponsor this space

Reach thousands of developers