backup-strategylisted
Install: claude install-skill ryukyagamilight/terminal-skills
# 备份策略设计
## 概述
3-2-1 策略、备份验证、保留策略设计技能。
## 3-2-1 备份策略
### 核心原则
```
3 - 至少保留 3 份数据副本
2 - 存储在 2 种不同介质上
1 - 至少 1 份异地存储
扩展 3-2-1-1-0:
3 份副本
2 种介质
1 份异地
1 份离线/不可变
0 个错误(验证通过)
```
### 实施示例
```bash
# 本地备份(副本 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/
```
## 备份类型
### 完整备份
```bash
# 每周完整备份
tar -czvf /backup/full_$(date +%Y%m%d).tar.gz /data
```
### 增量备份
```bash
# 基于时间戳
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
```
### 差异备份
```bash
# 基于完整备份时间
tar -czvf /backup/diff_$(date +%Y%m%d).tar.gz \
--newer-mtime="$(cat /backup/last_full_date)" /data
```
## 保留策略
### GFS 策略
```bash
# 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
```
### 滚动保留
```bash
#!/bin/bash
# 保留最近 N 个备份
BAC