Restic 增量加密备份
一句话概述:Restic 是用 Go 写的备份工具,支持增量备份和加密,能备份到本地/云存储/SFTP,恢复简单快速。
核心知识点
| 概念 | 白话解释 |
|---|
| Restic | 备份工具 = 加密的增量备份 |
| Repository | 仓库 = 备份数据存放的地方 |
| Snapshot | 快照 = 某一时刻的备份记录 |
| Deduplication | 去重 = 相同数据只存一份 |
| Encryption | 加密 = 备份数据全部加密 |
安装配置
# Linux
sudo apt install restic # Ubuntu/Debian
# macOS
brew install restic # Homebrew
# 验证
restic version # 查看版本
基本使用
# 1. 初始化备份仓库
restic init --repo /backup/my-repo # 本地目录
# 输入密码(用于加密,务必记住!)
# 2. 创建备份
restic -r /backup/my-repo backup /home/pweaz/项目 # 备份目录
restic -r /backup/my-repo backup /home/pweaz/Documents # 再备份一个目录
# 3. 查看快照
restic -r /backup/my-repo snapshots # 列出所有快照
# 4. 恢复备份
restic -r /backup/my-repo restore latest --target /tmp/restore # 恢复最新快照
restic -r /backup/my-repo restore abc123 --target /tmp/restore # 恢复指定快照
# 5. 排除文件
restic -r /backup/my-repo backup /home/pweaz \
--exclude="*.tmp" \ # 排除临时文件
--exclude=".cache" \ # 排除缓存
--exclude="node_modules" \ # 排除 node_modules
--exclude-file=.resticignore # 从文件读取排除规则
# 6. 清理旧快照
restic -r /backup/my-repo forget \
--keep-last 5 \ # 保留最近5个
--keep-daily 7 \ # 保留7天每天1个
--keep-weekly 4 \ # 保留4周每周1个
--keep-monthly 6 \ # 保留6个月每月1个
--prune # 实际删除数据
备份到云存储
# 备份到 S3(AWS/MinIO)
export AWS_ACCESS_KEY_ID=your-key # 设置密钥
export AWS_SECRET_ACCESS_KEY=your-secret
restic -r s3:s3.amazonaws.com/bucket-name init # 初始化
restic -r s3:s3.amazonaws.com/bucket-name backup /data # 备份
# 备份到 SFTP(远程服务器)
restic -r sftp:user@server:/backup/repo init # 初始化
restic -r sftp:user@server:/backup/repo backup /data # 备份
# 备份到 Rclone 支持的任何存储
restic -r rclone:remote:bucket/repo init # 通过 rclone
自动定时备份
# 使用 cron 定时备份
crontab -e # 编辑 cron
# 每天凌晨2点备份
0 2 * * * RESTIC_PASSWORD=xxx restic -r /backup/repo backup /home/pweaz --quiet
# 或使用 systemd timer(推荐)
# 创建 ~/.config/systemd/user/restic-backup.service
# 和 ~/.config/systemd/user/restic-backup.timer
常见报错
| 报错 | 原因 | 解决 |
|---|
wrong password | 密码错误 | 确认仓库密码 |
repository does not exist | 仓库未初始化 | restic init --repo ... |
unable to create lock | 上次备份异常中断 | restic unlock |
insufficient permissions | 权限不足 | 检查目录权限或用 sudo |
速查表
# 核心命令
restic init --repo <path> # 初始化仓库
restic backup <path> # 创建备份
restic snapshots # 列出快照
restic restore <id> --target <path> # 恢复备份
restic forget --keep-last N --prune # 清理旧快照
restic check # 检查仓库完整性
restic unlock # 解除锁定
restic diff <id1> <id2> # 比较两个快照
# 环境变量(避免每次输密码)
export RESTIC_REPOSITORY=/backup/repo # 仓库路径
export RESTIC_PASSWORD=your-password # 密码
# 或 export RESTIC_PASSWORD_FILE=/path/to/password-file