# Implementing Immutable Backup With Restic

> 使用 restic 与 S3 兼容存储及对象锁定实施不可变备份策略，提供抗勒索软件的 数据保护。自动化备份创建、通过 restic check --read-data 进行完整性验证、 快照保留策略执行和还原测试。与 AWS S3 Object Lock、MinIO 和 Backblaze B2 集成，提供防止勒索软件删除或加密备份的 WORM（一次写入多次读取）存储。

- Skill: `killvxk/implementing-immutable-backup-with-restic` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add killvxk/implementing-immutable-backup-with-restic`
- Raw SKILL.md: https://api.skillmd.com/api/skills/killvxk/implementing-immutable-backup-with-restic/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- License: Apache-2.0
- Author: killvxk (https://skillmd.com/u/killvxk)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/killvxk/implementing-immutable-backup-with-restic

---

# 使用 Restic 实施不可变备份

## 使用场景

- 建立具有密码完整性验证的抗勒索软件备份基础设施
- 实施 3-2-1-1-0 备份策略，其中额外的 1 是不可变副本
- 自动化备份验证工作流，按计划测试还原能力
- 防止备份仓库被已入侵的管理员账户删除或修改
- 满足使用防篡改存储的数据保留合规要求

**不要**将其用作唯一的备份解决方案，而不维护离线/气隙隔离的副本。对象锁定防止逻辑删除，但不防止物理存储故障。

## 前置条件

- 已安装 restic 二进制文件（https://restic.readthedocs.io/）
- 启用了对象锁定的 S3 兼容存储（AWS S3、MinIO、Backblaze B2）
- Python 3.8+ 及 subprocess 模块
- 已配置桶访问的 AWS CLI 或 MinIO 客户端（mc）
- 用于备份仓库的足够存储空间（通常为源数据的 2-3 倍，经去重后）

## 工作流程

### 步骤一：使用加密初始化 Restic 仓库

在启用了对象锁定的 S3 兼容存储上创建加密的 restic 仓库。Restic 使用 AES-256-CTR 加密，配合 Poly1305-AES 进行认证，确保备份数据既保密又防篡改。

### 步骤二：配置对象锁定保留

在备份桶上以合规模式（Compliance Mode）启用 S3 Object Lock，防止任何主体（包括 root）在保留期内删除或修改对象。将保留期设置为符合备份窗口要求（通常 30-90 天）。

### 步骤三：自动化备份和验证

使用 `restic check --read-data` 安排备份操作并进行备份后完整性验证，该命令下载并验证每个数据块的存储校验和。记录结果并对任何完整性失败发出告警。

### 步骤四：测试还原流程

定期从备份快照还原随机文件到临时位置，并与原始文件的校验和进行比对，以验证端到端备份完整性。记录还原时间用于 RTO 规划。

## 核心概念

| 术语 | 定义 |
|------|------------|
| **Object Lock** | 防止在指定保留期内删除或覆盖对象的 S3 功能 |
| **合规模式** | 即使是 root 账户在保留期到期前也无法删除对象的对象锁定模式 |
| **去重** | Restic 以内容寻址块存储数据，在所有快照间进行去重 |
| **3-2-1-1-0** | 3 份副本、2 种媒体类型、1 份异地、1 份不可变、0 个验证错误 |

## 工具与系统

- **restic**：具有内置加密和去重的快速、安全、跨平台备份工具
- **resticpy**：restic CLI 操作的 Python 封装
- **AWS S3 Object Lock**：用于防篡改备份保留的 WORM 存储
- **MinIO**：支持 Object Lock 的自托管 S3 兼容存储

## 输出格式

```
备份验证报告
===========================
仓库：s3:s3.amazonaws.com/company-backups-immutable
快照数：45
总大小：2.3 TiB（去重前 8.7 TiB）
最后备份：2026-03-11T02:00:00Z
完整性检查：通过（所有数据包已验证）
对象锁定：合规模式，90 天保留期
还原测试：通过（15 个文件已验证）
```

