在 Linux 中,有多种备份工具提供系统级备份和用户数据备份功能。
在这篇综合性的文章中,我们将研究什么是BorgBackup以及如何在 Linux 和类 Unix 系统中使用 Borg 备份和恢复文件。
- 1.介绍
- 2.什么是Borg?
- 3. 在 Linux 中安装 Borg
- 4. 使用 Borg 进行第一次备份
- 5. 初始化仓库
- 6.使用Borg备份文件
- 7. 列出备份
- 8. 找出档案之间的差异
- 9.重命名档案
- 10.使用borg恢复文件(从存档中提取数据)
- 11.挂载和卸载存储库和档案
- 12. 修剪档案
- 13.删除存储库和存档
- 14.更改密钥密码
- 15.导出和导入密钥
- 16. 使用远程仓库
- 17. 结论
1.介绍
当我在工作中处理大量数据时,首先想到的显而易见的问题是:
- 如果我丢失了数据怎么办?
- 我的数据的安全性如何?
相同的场景将应用于个人机器,您应该始终根据数据的重要性备份您的数据,并保护您的数据免受非法访问。
无论是您的个人数据还是官方数据,您都应该始终规划良好的备份策略,并使用强大的备份工具来帮助您备份重要数据。
最受推荐和广泛使用的开源备份应用程序之一是“Borg”。
2.什么是Borg?
BorgBackup,简称borg,是一种备份工具,旨在提供一种使用重复数据删除技术备份数据的有效方法。
下面列出了Borg的一些独特功能。
- 重复数据删除– 重复数据删除技术仅存储数据的增量副本,非常适合进行日常备份。
- 跨平台– Borg 可以在 Linux、Mac OS X 和 FreeBSD 中安装和使用。
- 安全– 支持使用AES加密(256 位)的数据加密,以验证使用HMAC-SHA256的真实性。
- 压缩– 可以使用以下压缩方法压缩数据:
- LZ4 -> 超快,低压缩。
- ZSTD -> 高速低压缩到低速高压缩。
- ZLIB -> 中等速度,中等压缩。
- LZMA -> 低速,高压缩。
- 远程备份– 数据可以通过 SSH 协议备份到远程机器。
3. 在 Linux 中安装 Borg
Borg 在大多数 Linux 发行版的默认存储库中可用,因此,它可以使用特定于发行版的包管理器进行安装。
要在 Alpine Linux 中安装 borg,请运行以下命令:
$ sudo apk add borgbackup
要在 Arch Linux 及其变体(例如 EndeavourOS 和 Manjaro Linux)中安装 borg,请运行以下命令:
$ sudo pacman -S borg
在基于 Debian/Ubuntu 的发行版中安装 borg:
$ sudo apt install borgbackup -y
在 Fedora、RHEL、CentOS、AlmaLinux 和 Rocky Linux 中安装 borg:
$ sudo dnf install borgbackup -y
在 openSUSE 中安装 Borg:
$ sudo zypper install borgbackup -y
由于 borg 是用Python编写的,因此您可以使用 python 包管理器PiP来安装 borg。根据安装的 pip 版本,您可以运行以下任一命令。
$ pip install borgbackup
或者,
$ pip3 install borgbackup
安装后,您可以通过运行 version 和 help 命令来验证 Borg 安装:
$ borg --version
$ borg --help

4. 使用 Borg 进行第一次备份
在进行第一次备份之前,您必须了解两个重要术语。
- 档案– 您的数据的备份副本(快照)将被称为档案。
- 存储库– 本地或远程文件系统中存储档案的目录。
首先初始化存储档案的存储库(目录)。
我在名为“source”的目录中有一个文件列表,并创建了一个名为“backup”的新目录,它将作为我存储档案的存储库。

5. 初始化仓库
执行borg init命令初始化备份目录。备份目录可以在本地机器或远程机器中。就我而言,我正在初始化我已经创建的目录(即备份)。
$ borg init --encryption=none /home/karthick/borg/backup
$ borg init --encryption=repokey /home/karthick/borg/backup
$ borg init --encryption=keyfile /home/karthick/borg/backup
初始化存储库时,您可以选择加密类型,当您使用加密类型为”None” 时,不会应用任何加密,当您使用“repokey”和“keyfile”作为加密类型时,它使用AES-CTR-256进行加密。
选择任何一种加密类型并运行该init命令,就我而言,出于演示目的,我选择加密类型为无。
6.使用Borg备份文件
6.1. 创建第一个备份
初始化存储库后,您可以通过运行以下命令来创建备份存档:
$ borg create --stats --progress /home/karthick/borg/backup::25-11-2021 /home/karthick/borg/source/
在这里,我以模拟每日备份的日期格式“25-11-2021”给出存档名称,没有–stats和–progress标志,创建命令的输出将是安静的。

6.2. 创建备份时显示文件
您还可以组合–list和-v标志以在运行borg create命令时显示存档中的文件列表。
$ borg create --list -v /home/karthick/borg/backup/::27-11-2021 /home/karthick/borg/source/

6.3. 创建压缩备份
默认情况下,borg 使用lz4压缩算法,lz4压缩算法速度非常快,压缩比低,如果您想使用不同的压缩算法,您可以使用该–compression标志并将类型与压缩级别一起传递。
例如,如果我想使用zstd算法,那么我的命令将如下所示。
$ borg create --compression zstd,1 /home/karthick/borg/backup/::27-11-2021 /home/karthick/borg/source/
您可以从 Borg 官方文档中查看不同的压缩算法及其级别。
6.4. 获取存档信息
您可以使用该info命令来获取有关特定存档的信息。
$ borg info /home/karthick/borg/backup/::25-11-2021

7. 列出备份
使用该borg list命令,您可以查询您的存储库以查找档案列表以及档案中包含哪些文件。
要单独获取档案列表,请运行以下命令。
$ borg list /home/karthick/borg/backup
示例输出:
25-11-2021 Thu, 2021-11-25 13:16:53 [653d952301fc70ab9f2f74794361359144e05f5534e668ef4a4957d2c7f67937]
26-11-2021 Thu, 2021-11-25 13:19:51 [473bbe30fbe8597b63910310d567e69b501b2fb7127f04a78da76ab59d90114f]
27-11-2021 Thu, 2021-11-25 13:20:01 [0e6813f1a05246d43d196de9d28034d0397b4ae50cd20ee50163e347efee3e2a]
您还可以使用该–json标志,它将以json格式提供有关存储库和档案列表的更多信息。
$ borg list --json /home/karthick/borg/backup

7.1. 列出档案中的文件
要获取存档中的文件列表,请运行以下命令。在这里,我列出了存档”25-11-2021″ 中的文件。
$ borg list /home/karthick/borg/backup::25-11-2021
示例输出:
drwxrwxr-x karthick karthick 0 Thu, 2021-11-25 12:48:58 home/karthick/borg/source
-rw-r--r-- karthick karthick 807 Mon, 2021-11-22 13:35:51 home/karthick/borg/source/project_profile.txt
-rw------- karthick karthick 2301 Mon, 2021-11-22 13:35:51 home/karthick/borg/source/hist.txt
-rw-r--r-- karthick karthick 220 Mon, 2021-11-22 13:35:51 home/karthick/borg/source/external.txt
-rw-r--r-- karthick karthick 3895 Mon, 2021-11-22 13:35:51 home/karthick/borg/source/config.txt
您还可以使用该–json-lines标志以JSON格式列出存档内容。

7.2. 从备份中排除文件和目录
您可以使用-e或–exclude标志排除文件和目录。
$ borg list /home/karthick/borg/backup::25-11-2021 --exclude "hist"

8. 找出档案之间的差异
您可以使用该diff命令来比较两个存档。
我正在创建一个名为目录datafile.txt下的新文件source,我还创建了一个名为28-11-2021 的档案。
现在我可以比较新存档和旧存档,如下所示:
$ borg diff /home/karthick/borg/backup/::27-11-2021 28-11-2021
added 2.89 kB home/karthick/borg/source/datafile.txt

9.重命名档案
创建存档后,如果您想重命名它,您可以使用该borg rename命令来完成。
假设我想将档案”27-11-2021″重命名为”29-11-2021″,我可以通过运行以下命令来做到这一点。
$ borg rename /home/karthick/borg/backup/::27-11-2021 29-11-2021

10.使用borg恢复文件(从存档中提取数据)
备份数据的主要重点是在需要时进行恢复,因此,您可以使用该borg extract命令从档案中检索数据,当您运行该extract命令时,它会将数据提取到您从中运行提取命令的当前工作目录。
运行以下命令将存档解压缩到当前工作目录。随着-v和–list标志补充说,它会告诉你提取的文件列表。
$ borg extract -v --list backup/::25-11-2021

您还可以使用–dry-run标志,它只会显示将要提取的内容而不是提取它。
$ borg extract --dry-run -v --list backup/::25-11-2021
您可以通过传递目录名称从存档中提取特定目录,由于我的存档中只有一个目录,因此它将检索该目录。
$ borg extract -v --list backup/::25-11-2021 home/karthick/borg/source/
10.1. 从还原中排除文件
您还可以–exclude在提取目录时添加以省略文件,在这里,我正在提取所有文件,不包括带有hist 的任何文件。
$ borg extract -v --list backup/::25-11-2021 home/karthick/borg/source/ --exclude "hist"

11.挂载和卸载存储库和档案
您可以将存储库或特定存档安装为保险丝文件系统,然后,您可以使用安装的存档恢复文件。
要挂载整个存储库,请运行以下命令:
$ mkdir /tmp/borg/
$ borg mount /home/karthick/borg/backup/ /tmp/borg/
$ ls -l /tmp/borg/
示例输出:
drwxr-xr-x 1 karthick karthick 0 Nov 25 16:31 25-11-2021
drwxr-xr-x 1 karthick karthick 0 Nov 25 16:31 26-11-2021
drwxr-xr-x 1 karthick karthick 0 Nov 25 16:31 27-11-2021
drwxr-xr-x 1 karthick karthick 0 Nov 25 16:31 28-11-2021
drwxr-xr-x 1 karthick karthick 0 Nov 25 16:32 29-11-2021
您可以从上面的输出中看到我的所有档案都安装为一个目录,现在我可以通过复制文件来简单地恢复。
要挂载特定档案,只需将档案名称与存储库一起添加即可。
$ borg mount /home/karthick/borg/backup/::25-11-2021 /tmp/borg/
要卸载已安装的存储库或存档,请使用该borg umount命令。
$ borg umount /tmp/borg
$ ls -l /tmp/borg
12. 修剪档案
borg prune当您自动备份并且只想维护某些副本并清除剩余副本时,该命令将非常有用。

上表中的选项决定了您的存储库中要保存多少存档副本,例如,如果我只想从每周备份中保留2 个副本,那么我的命令将如下所示。
$ borg prune -v --list --keep-weekly=2 /home/karthick/borg/backup/
您也可以将上述条件单独应用于某些档案,例如,假设我的存储库中有 10 个存档,并且我希望应用存档 7 的保留规则,然后我可以使用该–prefix标志来设置条件。
$ borg prune -v --list --keep-weekly=2 --prefix='{archive name}' /home/karthick/borg/backup/
在运行prune命令之前,请使用–dry-run标志进行试运行。
13.删除存储库和存档
您可以使用该borg delete命令删除存档或整个存储库。
要删除单个存档,您必须提供存档名称。
$ borg delete /home/karthick/borg/backup/::26-11-2021

要删除整个存档,只需提供存储库路径。删除整个目录时,系统会提示您进行确认。
$ borg delete /home/karthick/borg/backup/

14.更改密钥密码
到目前为止,我已经展示了我的示例,但没有对存储库应用任何加密。正如在初始部分中所预测的那样,您可以在启用加密的情况下初始化一个目录,如果使用repokey或keyfile,它会要求您选择设置密码短语。
$ borg init --encryption=repokey /home/karthick/borg/bkup/

从现在开始,每当我尝试对该存储库进行任何操作时,我都应该每次都提供密码。看看下面的图片,我正在尝试列出存储库,我必须为其提供密码。

现在假设您希望更改密码,然后您可以使用该borg change-passphrase命令进行更改。
$ borg key change-passphrase -v /home/karthick/borg/bkup

您还可以使用环境变量设置密码。
$ BORG_PASSPHRASE="old password" BORG_NEW_PASSPHRASE="new password" borg key change-passphrase /home/karthick/borg/bkup
15.导出和导入密钥
您可以通过导出来备份存储库密钥,然后在需要时将其导入。
要导出密钥,请运行以下命令:
$ borg key export bkup/ ./key
$ cat ./key
要将密钥导入同一个存储库,请运行以下命令:
$ borg key import bkup/ ./key

16. 使用远程仓库
到目前为止,我们所看到的都是在同一台机器上备份您的数据,Borg 还支持远程存储库,您可以在其中备份任何远程机器上的数据。远程主机应该可以通过 SSH 访问。
句法:
$ borg init user@hostname :/path/to/repo
例子:
$ borg init karthick @ostechnix :/home/karthick/borg/bkup
您可以执行可以使用本地备份执行的各种类似操作。例如,要恢复您可以使用的备份extract,也可以使用该mount命令挂载远程存储库。
在这里,当指向远程目录时,您必须将 ssh 协议指向“ ssh://username@hostname:port/path/to/repo”。
$ borg mount ssh://karthick@ostechnix:2222/home/karthick/borg/bkup /tmp/borg
$ borg extract ssh://karthick@ostechnix:2222/home/karthick/borg/bkup
17. 结论
在本文中,我们已经看到了如何使用 borg 在 Linux 中备份和恢复您的数据,Borg 有很多特性,你可以通过测试工具来理解。
暂无评论内容