开源、高效的专用备份工具BorgBackup

BorgBackup(简称 Borg)是一款开源、高效的专用备份工具,设计目标是支持去重压缩,从而减少备份所需的存储空间,并且能够在本地和远程进行备份。它特别适合处理增量备份和备份大量重复文件的场景,使用加密技术确保备份数据的安全。

BorgBackup 的主要特点

  1. 去重
    • 块级别去重是 Borg 的核心功能之一。即使备份中存在多个相同的文件,Borg 只会存储这些文件的不同部分,从而节省了大量空间。
    • 对于备份频率较高、数据变化不大的场景非常有效,因为它能避免重复备份未变化的数据块。
  2. 压缩
    • Borg 支持多种压缩算法(如 lz4zliblzma),用户可以根据需求选择合适的压缩方式,以节省存储空间。
    • 可以通过压缩进一步减少备份所需的磁盘空间。
  3. 加密
    • Borg 支持端到端加密,备份数据在传输和存储时都可以使用加密方式确保安全。
    • 使用 AES-256Blowfish 算法进行加密,保证数据不会被窃取或篡改。
  4. 增量备份
    • Borg 支持高效的增量备份,即每次备份时仅存储自上次备份以来发生变化的数据块,减少备份时间和存储需求。
  5. 远程备份
    • 支持通过 SSH 将备份数据存储到远程服务器上,非常适合异地备份。
    • 通过压缩和去重,远程传输的数据量非常小,适合低带宽场景。
  6. 文件系统快照
    • Borg 可以与文件系统快照工具结合使用(如 btrfsZFS 的快照功能),对正在使用的文件系统进行备份,保证数据的一致性。
  7. 灵活的恢复功能
    • Borg 可以非常灵活地恢复数据到任何指定时间点,支持文件的精确还原。
    • 通过文件名、时间戳等进行过滤恢复,方便用户查找特定版本的文件。
  8. 跨平台支持
    • Borg 支持 Linux、macOS 和 Windows(通过 WSL 或 Cygwin),可以在多种操作系统上使用。

BorgBackup 的安装

BorgBackup 可以通过多种方式安装:

也可以使用 pip 在 Python 环境中安装:

pip install borgbackup

在基于 Fedora/RedHat 的系统上,使用以下命令安装:

sudo dnf install borgbackup

在基于 Debian/Ubuntu 的系统上,使用以下命令安装:

sudo apt install borgbackup

基本使用流程

1. 初始化备份存储库

在开始备份之前,需要在本地或远程服务器上初始化一个备份存储库(repository)。备份数据将存储在该存储库中。

borg init --encryption=repokey /path/to/backup-repo

--encryption=repokey 表示使用加密密钥进行加密。如果不需要加密,可以选择 none

2. 创建备份

备份时需要指定要备份的文件夹或目录。以下命令将 /path/to/data 备份到 /path/to/backup-repo 中,backup-name 是此次备份的名称。

borg create /path/to/backup-repo::backup-name /path/to/data

可以加上 --progress 来查看备份进度,也可以加上 --stats 查看备份后的统计数据。

3. 恢复备份

恢复备份时,可以从指定的备份中还原整个文件夹或单个文件。

还原单个文件:

borg extract /path/to/backup-repo::backup-name /path/to/file

还原整个文件夹:

borg extract /path/to/backup-repo::backup-name

4. 备份管理

压缩备份
你可以在备份时指定压缩选项,例如:

borg create --compression lz4 /path/to/backup-repo::backup-name /path/to/data

删除备份
如果要删除指定的备份,可以使用以下命令:

borg delete /path/to/backup-repo::backup-name

查看备份列表
列出当前存储库中的所有备份:

borg list /path/to/backup-repo

5. 远程备份

通过 SSH 进行远程备份时,使用类似的命令,但备份存储库路径将包含 SSH 信息,例如:

borg create ssh://user@remote-server:/path/to/backup-repo::backup-name /path/to/data

6. 自动化备份

可以通过 cron 定时执行备份任务。例如,创建一个脚本 backup.sh

#!/bin/bash
borg create --progress /path/to/backup-repo::backup-$(date +%Y-%m-%d) /path/to/data

将该脚本添加到 cron 中,实现定期备份:

0 3 * * * /path/to/backup.sh

BorgBackup 的优点

  1. 高效的去重和压缩
    • 通过块级去重和压缩功能,Borg 能显著减少备份所需的存储空间,适合大规模文件备份。
  2. 强大的加密功能
    • 支持端到端加密,确保数据传输和存储时的安全性,尤其适合备份敏感数据。
  3. 增量备份节省时间和带宽
    • 只备份自上次备份以来更改的部分,减少备份时间和网络带宽消耗。
  4. 远程备份
    • 通过 SSH 支持将备份发送到远程服务器,适合异地灾备场景。
  5. 跨平台支持
    • Borg 可以在 Linux、macOS 和 Windows(通过 WSL 或 Cygwin)上运行,灵活性强。

BorgBackup 的缺点

  1. 学习曲线
    • Borg 是一个强大的命令行工具,初学者可能需要一些时间才能完全掌握它的功能和用法。
  2. Windows 支持有限
    • 虽然 Borg 可以在 Windows 的 WSL 或 Cygwin 上运行,但与原生 Windows 工具相比,配置相对复杂。
  3. 备份时间较长
    • 第一次备份可能会很耗时,特别是当数据量非常大时。

适用场景

  • 本地和远程备份:需要备份大量数据到本地或远程服务器,且希望利用去重功能节省空间。
  • 数据安全性要求高:需要备份重要或敏感数据,并确保数据在传输和存储时的加密。
  • 自动化备份:需要定期自动备份文件的场景。

总结

BorgBackup 是一个非常高效的备份工具,特别适合需要频繁备份、增量备份和重复数据较多的场景。它的去重、压缩和加密功能使其在处理大数据量和敏感数据时非常有优势。通过结合 SSH,它还可以方便地实现远程备份,是一个非常灵活且安全的备份解决方案。如果你正在寻找一个高效、可靠、可扩展的备份工具,BorgBackup 是一个非常不错的选择。


各个压缩算法的区别

BorgBackup 支持多种压缩算法,每种算法在速度和压缩率上有不同的表现。下面是一些常用的压缩算法及其特点:

  1. LZ4
    • 优点:压缩速度极快,解压缩速度也非常快。
    • 缺点:压缩率较低。
    • 适用场景:需要快速备份和恢复的情况,适合 CPU 资源较少的设备。
  2. Zlib (也称为 Deflate)
    • 优点:压缩速度和压缩率之间的平衡较好,解压缩速度也不错。
    • 缺点:相较于 LZ4 速度略慢。
    • 适用场景:需要适度压缩但不想损失太多性能的场景。
  3. LZMA (xz)
    • 优点:提供极高的压缩率。
    • 缺点:压缩速度较慢,解压速度也较慢,占用较多的 CPU 资源。
    • 适用场景:对于存储空间要求高、备份量大且可以容忍较长备份时间的场景。

已备份的仓库能否再压缩?

Borg 并不支持对已经备份的数据进行二次压缩(即无法对已存在的备份直接改变压缩算法)。不过,你可以在后续的备份中更改压缩设置,这不会影响到之前的备份。换句话说,新数据可以用新的压缩算法备份,而旧的备份依然保持之前的压缩方式。

如果你想重新压缩已经备份的数据,你需要做的是重新创建一个仓库,并使用新的压缩设置备份数据。这可能需要更多时间和存储空间。


关于远程备份

需要了解命令的构成

borg create remote:~/backup:bak01 ./data

这个命令表示把本地的data文件夹备份到remote的~/backup仓库,并且创建为bak01的快照。