修改 BTRFS 文件系统 UUID

Naf*_*Kay 19 btrfs uuid

我已经使用 Clonezilla 备份了我的 BTRFS 文件系统,并将其中一个备份恢复到名为2013-11-29.sda3.img.

我需要从这个备份中取出一些文件,但是出了点问题。由于备份是这台机器的,我不能在我的文件系统的任何地方挂载备份,因为它的 UUID 与/.

有没有办法可以更改备份卷的 UUID?据我了解,BTRFS 将 UUID 信息存储在文件系统的每个块中,这使我的目的变得复杂。但是,有没有办法可以修改它?我知道这可能需要很长时间才能完成,但这与我无关。我主要关心的是保持服务器在线。备份相当大,因此将其转移到另一台机器需要很长时间。

我有哪些选择?

dev*_*fan 30

该程序btrfstune是普通 btrfs-tools 的最新版本的一部分,可以更改脱机文件系统的 UUID。如果分区是例如。/dev/sda1,使用以下命令生成新的随机 UUID:

btrfstune -u /dev/sda1
Run Code Online (Sandbox Code Playgroud)

要指定应使用哪个值,请使用大写字母-U后跟(有效)UUID 字符串,例如:

sudo btrfstune -U e0c5b943-1c02-44a2-bbaf-87ebda5e363b /dev/sdaX
Run Code Online (Sandbox Code Playgroud)


小智 1

目前还没有办法做到这一点。实际上,卷 UUID 用于块树的每个节点中。您还必须在那里更改它们,并假设块/设备的标头未经过哈希处理。BTRFS 的设计确实不允许这种备份。

这确实令人难过,但解决这个问题的最简单方法是使用另一台计算机。

如果可以的话,我想建议您停止以这种方式备份数据。

  1. 如果您的分区作为一个整体很重要,请使用dd/进行备份clonezilla。当您需要恢复备份时,请立即恢复整个分区。不要进行这种混合备份:您专门在​​块级别保存了分区。所以你必须在集团级别恢复它。否则,你就是用勺子来切肉。正如您肯定注意到的,该解决方案通常不被使用,因为它不提供多功能性。

  2. 如果您的数据很重要,请使用rsync另一个磁盘上的类似工具进行备份:您的数据将始终可访问,您可以准确备份您想要的内容,您正在文件级别进行备份等。

请注意,BTRFS 有一些(现在有限的)备份功能。BTRFS 发展很快,我想未来会推出更多备份功能。

哦,您已经被警告过 ;)自动 Clonezilla 备份和 GPG 加密

顺便说一句,使用 LUKS 进行基于分区的加密或使用 EnFS 或 EncryptFS 进行基于文件的加密,可以更轻松地对文件进行加密。