Borg 备份

来自 ArchWiki

BorgBackup (简称: Borg) 是一款重复数据删除备份程序。 可选地,它支持压缩和认证加密。

Borg 的主要目标是提供一种高效且安全的数据备份方式。 使用的数据重复数据删除技术使 Borg 适用于日常备份,因为只存储更改的内容。 认证加密技术使其适用于备份到非完全信任的目标。

安装

安装 borg 软件包。 下一个主要版本版本 2,以 beta 版形式提供,软件包为 borg2AUR。 开发版本以 borg-gitAUR 提供。

对于其他功能,请安装以下软件包

python-llfuse
用于挂载归档
openssh
用于连接到远程主机
borgmatic
一组包装脚本,用于通过 YAML 文件而不是终端命令控制 Borg (borgmatic, (网站)
borgctlAUR
borgbackup,无需 bash 脚本 - 类似于 borgmatic,但功能集略有不同 (borgctl)
pika-backup
一个基于 libadwaita/GTK4 的 Borg GUI
vorta
一个基于 Qt 的 Borg GUI
borgtui-gitAUR
用于定期计划备份的 TUI 和 CLI

如果您希望备份到与数据源不同的机器,则另一台机器(“服务器”)也需要安装 borg。 为了方便创建和管理备份,服务器管理员可以利用

borgwarehouseAUR
用于 Borg 中央仓库服务器的 WebUI,与 https://www.borgbase.com/ 提供的付费服务类似。
borgreportAUR
获取关于仓库的报告,其中包含统计信息、警告和错误消息(可选地通过电子邮件),并导出 OpenMetrics。

文档

官方文档包括快速入门指南。 本地文档可以在 borg(1)apropos borg 中找到。

此外,可以通过命令找到指导,一般为

$ borg help

或针对特定命令

$ borg help command

用法

Borg 背后的主要概念是去重:与传统 TAR 归档中累积文件不同,去重通过哈希文件来验证文件的身份,而不管其名称如何,以便它们只被复制一次。 这意味着即使没有压缩,对于重复的增量备份,它也只占用最少的空间。

文件压缩是可选的,并支持多种算法(推荐使用 zstd)和强度。

使用 Borg 创建的归档可以作为 FUSE 文件系统挂载,以用于浏览和恢复单个文件。

归档可以在本地创建,也可以在使用 SSHFSNFSSamba 或类似挂载解决方案的远程系统上创建。 支持通过 SSH 传输,但远程主机必须安装 Borg。

创建仓库

Borg 仓库可以加密或进行防篡改。 有关模式和选项的更多信息,请查阅关于设置仓库的官方文档

要创建没有加密或身份验证的 Borg 仓库

$ borg init --encryption=none /path/to/repo

创建归档

可以使用 borg create 命令在仓库中创建单独的归档实例。 每个归档都必须给定一个唯一的名称。 Borg 包括占位符列表,以使添加日期、时间、用户名和主机名等字符串更容易。

要使用源机器的主机名和当前日期创建 archivable-dir 目录的归档

$ borg create /path/to/repo::{hostname}-{now:%Y-%m-%d} archivable-dir

Borg 支持广泛的包含和排除选项。 要从归档中排除 .pyc 文件

$ borg create ... --exclude '*.pyc' /path/to/repo::archive-name

更多信息可以在 borg create 文档页面上找到。

修剪归档

旧归档的删除不会自动执行,但可以使用 borg prune 命令手动执行。 必须指定要保留的归档数量,并且可以按归档的创建时间进行限制。

要仅保留最近 7 个每日归档、最近 4 个每周归档和最近 3 个每月归档

$ borg prune --keep-daily=7 --keep-weekly=4 --keep-monthly=3 /path/to/repo

要仅保留最近 10 个归档,无论它们何时创建

$ borg prune --keep-last=10 /path/to/repo

要保留过去 30 天内的所有归档,无论包含多少个归档

$ borg prune --keep-within=30d /path/to/repo
注意: 修剪将删除归档,但实际上不会释放仓库中的空间。 要释放空间,请在仓库上使用 borg compact 命令。
警告: 修剪是对仓库中所有归档执行的,除非受到 --prefix--glob-archives 标志的限制。

更多信息可以在 borg prune 文档页面上找到。

从归档恢复

要从归档恢复

$ borg extract /path/to/repo::archive-name path/to/restore
注意: Borg 将提取相对于当前工作目录的完整路径。 这意味着在 archuser 的主目录中从归档恢复路径 /home/archuser/path/to/restore 将导致完整的恢复路径为 /home/archuser/home/archuser/path/to/restore

或者,可以挂载仓库以进行交互式恢复

$ borg mount /path/to/repo::archive-name

技巧和诀窍

缓存排除

可以通过排除缓存目录来减小归档的大小。 遵循缓存目录标记标准的目录可以通过在归档创建命令中附加 --exclude-caches 来自动排除

$ borg create ... --exclude-caches /path/to/repo::archive-name

列出受影响的文件

Borg 中的许多操作都支持 --list 标志来列出受影响的文件或归档。 如果与 --dry-run 配对使用,用户可以验证给定命令的效果。

参见