如何备份实例

有多种方法可以备份您的实例

选择哪种方法取决于您的用例和使用的存储驱动程序。

通常,快照速度快且空间效率高(取决于存储驱动程序),但它们存储在与实例相同的存储池中,因此不太可靠。导出文件可以存储在不同的磁盘上,因此更可靠。它们也可以用来将实例恢复到不同的存储池。如果您有一个单独的网络连接的 Incus 服务器可用,定期将实例复制到此服务器可以提供高可靠性,这种方法也可以用来备份实例的快照。

注意

自定义存储卷可能附加到实例,但它们不是实例的一部分。因此,当您备份实例时,不会存储自定义存储卷的内容。您必须单独备份存储卷的数据。有关说明,请参见 如何备份自定义存储卷

使用快照进行实例备份

您可以通过创建实例快照来保存实例在某个时间点的状态,这使得将实例恢复到以前的状态变得很容易。

实例快照存储在与实例卷本身相同的存储池中。

大多数存储驱动程序支持优化的快照创建(请参见 功能比较)。对于这些驱动程序,创建快照既快又节省空间。对于 dir 驱动程序,快照功能可用,但效率不高。对于 lvm 驱动程序,快照创建速度很快,但仅当使用瘦池模式时,恢复快照才有效。

创建快照

使用以下命令创建实例快照

incus snapshot create <instance_name> [<snapshot name>]

--reuse 标志与快照名称结合使用以替换现有快照。

默认情况下,快照会永久保留,除非设置了 snapshots.expiry 配置选项。要保留特定快照,即使设置了常规过期时间,也请使用 --no-expiry 标志。

对于虚拟机,您可以添加 --stateful 标志,不仅捕获实例卷中包含的数据,还捕获实例的运行状态。请注意,此功能尚未完全支持容器,因为 CRIU 的限制。

查看、编辑或删除快照

使用以下命令显示实例的快照

incus info <instance_name>

您可以像实例一样查看或修改快照,方法是通过 <instance_name>/<snapshot_name> 引用快照。

要显示有关快照的配置信息,请使用以下命令

incus config show <instance_name>/<snapshot_name>

要更改快照的过期日期,请使用以下命令

incus config edit <instance_name>/<snapshot_name>

注意

通常,快照无法编辑,因为它们保留了实例的状态。唯一的例外是过期日期。对配置的其他更改将被静默忽略。

要删除快照,请使用以下命令

incus snapshot delete <instance_name> <snapshot_name>

安排实例快照

您可以配置实例以在特定时间自动创建快照(最多每分钟一次)。为此,请设置 snapshots.schedule 实例选项。

例如,要配置每天创建快照,请使用以下命令

incus config set <instance_name> snapshots.schedule @daily

要配置每天上午 6 点创建快照,请使用以下命令

incus config set <instance_name> snapshots.schedule "0 6 * * *"

在安排定期快照时,请考虑设置自动过期时间 (snapshots.expiry) 和快照的命名模式 (snapshots.pattern)。您还应该配置是否要创建未运行的实例的快照 (snapshots.schedule.stopped)。

恢复实例快照

您可以将实例恢复到其任何快照。

为此,请使用以下命令

incus snapshot restore <instance_name> <snapshot_name>

如果快照是有状态的(这意味着它包含有关实例运行状态的信息),您可以添加 --stateful 标志以恢复状态。

使用导出文件进行实例备份

您可以将实例的全部内容导出到一个独立的文件,该文件可以存储在任何位置。为了获得最高的可靠性,请将备份文件存储在不同的文件系统上,以确保它不会丢失或损坏。

导出实例

使用以下命令将实例导出到压缩文件(例如,/path/to/my-instance.tgz

incus export <instance_name> [<file_path>]

如果您没有指定文件路径,则导出文件将保存在工作目录中,名为 <instance_name>.<extension>(例如,my-container.tar.gz)。

警告

如果输出文件(<instance_name>.<extension> 或指定的文件路径)已存在,则该命令将覆盖现有文件,不会发出任何警告。

您可以向该命令添加以下任何标志

--compression

默认情况下,输出文件使用 gzip 压缩。您可以指定不同的压缩算法(例如,bzip2)或使用 --compression=none 关闭压缩。

--optimized-storage

如果您的存储池使用 btrfszfs 驱动程序,请添加 --optimized-storage 标志以将数据存储为驱动程序特定的二进制 blob,而不是单个文件的存档。在这种情况下,导出文件只能与使用相同存储驱动程序的池一起使用。

以优化模式导出卷通常比导出单个文件更快。快照以与主卷的差异形式导出,这会减小其大小并使其易于访问。

--instance-only

默认情况下,导出文件包含实例的所有快照。添加此标志以导出实例,但不包括其快照。

从导出文件恢复实例

您可以将导出文件(例如,/path/to/my-backup.tgz)导入为新实例。为此,请使用以下命令

incus import <file_path> [<instance_name>]

如果您没有指定实例名称,则使用导出的实例的原始名称作为新实例的名称。如果指定存储池中已存在(或仍然存在)具有该名称的实例,则该命令将返回错误。在这种情况下,请在导入备份之前删除现有实例,或为导入指定不同的实例名称。

将实例复制到备份服务器

您可以将实例复制到辅助备份服务器以对其进行备份。

有关说明,请参阅 如何在服务器之间移动现有 Incus 实例