← 返回信息流
GitHub 热榜GitHub Trending · 日·2 小时前

Restic - 快速、安全且高效的备份程序

原标题:restic/restic
Go34,034 stars+33 今日

速览

Restic 是一个用 Go 语言编写的命令行备份工具,支持多种后端存储(如 S3、SFTP、本地目录等)。它通过加密和去重技术,确保备份数据的安全性与存储效率,适用于个人及企业级数据保护场景。

AI 深度解读

这是什么

Restic 是一款用 Go 语言编写的高效、安全且快速的开源备份程序。它支持 Linux、macOS、Windows 等主流操作系统,以及 FreeBSD、OpenBSD 等小众系统。

Restic 的核心理念是“正确地做备份”,其设计初衷是为了克服传统备份工具在速度、安全性和易用性上的痛点。它采用去中心化架构,无需运行后台守护进程,通过命令行即可直接操作。Restic 支持多种存储后端,包括本地目录、SFTP、Amazon S3、Azure Blob Storage、Google Cloud Storage 等,并可通过 rclone 支持更多服务。

该项目采用 BSD 2-Clause License 开源,自 0.6.1 版本起提供可复现的二进制构建,确保代码与发布版本的一致性。

解决的问题

Restic 主要解决以下传统备份场景中的痛点:

  1. 备份过程繁琐:许多备份工具配置复杂,导致用户因畏难而放弃定期备份。Restic 旨在提供无摩擦(frictionless)的使用体验,降低配置和恢复的门槛。
  2. 备份速度慢:传统全量备份耗时过长,导致用户无法频繁执行每日备份。Restic 通过增量备份和并行处理,将备份速度限制仅受限于网络或磁盘带宽,支持高频备份。
  3. 数据完整性与安全性不足:在不可信环境(如共享服务器或公共云存储)中,数据可能被篡改或泄露。Restic 利用密码学技术确保数据的机密性和完整性,防止未授权访问或篡改。
  4. 存储空间浪费:重复数据占用大量存储资源。Restic 在写入存储后端前进行去重处理,仅存储实际增量数据,极大节省存储空间。
  5. 恢复验证困难:备份的价值在于恢复,但多数工具缺乏便捷的验证机制。Restic 允许用户轻松验证所有数据是否可完整恢复,确保备份真实有效。

核心功能

  • 多后端支持:原生支持本地目录、SFTP (SSH)、HTTP REST server (rest-server)、Amazon S3 (含 Minio)、OpenStack Swift、BackBlaze B2、Microsoft Azure Blob Storage、Google Cloud Storage。此外,通过集成 rclone,可无缝支持数百种其他云存储和文件系统服务。
  • 加密与去重:所有数据在写入前进行加密和去重。密码用于派生加密密钥,确保即使存储后端被攻破,数据依然保密。重复数据块仅存储一次,节省空间。
  • 快照管理:每次备份生成一个快照(Snapshot),包含文件元数据和内容哈希。支持列出、比较、删除快照,便于版本管理和时间旅行恢复。
  • 快速恢复:支持按文件、目录或整个仓库进行恢复。恢复时仅传输所需数据块,避免不必要的数据下载。
  • FUSE 挂载:可通过 FUSE 将备份仓库挂载为本地文件系统,用户可直接浏览和复制历史快照中的文件,无需显式恢复。
  • 可复现构建:自 0.6.1 起,官方发布的二进制文件支持可复现构建,用户可从源码生成字节级一致的版本,增强供应链安全。
  • 跨平台兼容:原生支持 Linux、macOS、Windows、FreeBSD、OpenBSD,无需额外依赖即可运行。

亮点 / 与同类相比

  • 无需守护进程:与 BorgBackup 等需要运行后台服务的工具不同,Restic 是纯命令行工具,无状态设计,便于集成到 CI/CD 或 cron 任务中,减少运维复杂度。
  • 端到端加密:默认启用强加密,数据在传输和静态存储时均受保护,适合对数据安全要求高的场景。
  • 增量备份效率:基于内容寻址存储(Content-Addressable Storage),自动识别重复数据块,仅存储增量变化,备份速度快且节省空间。
  • 灵活的恢复方式:支持直接挂载快照浏览文件,无需完整恢复即可获取所需数据,提升应急恢复效率。
  • 社区与生态:拥有活跃的 Discourse 论坛和 Mastodon 社区,文档完善。通过 rclone 集成,可轻松对接各种新兴或小众存储后端。
  • 透明与可验证:提供详细的备份进度、错误统计和时间估算,支持验证备份完整性,增强用户信任。

适合谁用 / 上手

适合人群

  • 系统管理员和 DevOps 工程师,需要自动化、安全的备份解决方案。
  • 个人用户,希望简单快速地备份个人数据到云存储或外部硬盘。
  • 对数据安全和隐私有高要求的团队,需要端到端加密和去重功能。
  • 使用多种云存储服务的用户,希望统一备份接口。

快速上手

  1. 安装:从 restic/releases 下载对应平台的二进制文件,或包管理器安装(如 apt, brew)。
  2. 初始化仓库
    restic init --repo /tmp/backup
    
    设置密码,密码用于加密数据,务必妥善保管。
  3. 执行备份
    restic --repo /tmp/backup backup ~/work
    
    输入密码后,Restic 将扫描并备份指定目录,生成快照。
  4. 恢复数据
    • 直接恢复文件:
      restic --repo /tmp/backup restore <snapshot-id> --target /restore/path
      
    • 挂载快照浏览:
      restic --repo /tmp/backup mount /mnt/restic
      
  5. 进阶使用
    • 查看快照:restic snapshots --repo /tmp/backup
    • 备份到云存储:设置环境变量(如 AWS_ACCESS_KEY_ID),然后使用 --repo s3:s3.amazonaws.com/bucket-name 指定仓库。

更多详细用法和配置选项,请参考 官方文档

查看原文 →github.com