如何解决 btrfs 错误?从 btrfs 复制到另一个分区?

如何解决 btrfs 错误?从 btrfs 复制到另一个分区?

我的工作系统空间不足。所以我在磁盘末尾添加了空间。

从 gparted ISO 启动

  1. 启动 gparted 将第 3 个分区(共 3 个)移至右侧。调整第 2 个分区(共 3 个分区)的大小以声明未使用的空间。

  2. 错误:大约 100 个文件存在 csum 错误。

  3. btrfs 检查 --repair /dev/sda2

  4. 错误仍然存​​在

  5. 好的,清除 crc --init-csum-tree

  6. 错误仍然存​​在,并且无法扩展分区

问题我应该如何解决这个问题?

所以我添加了一个硬盘,创建了一个新分区,并使用 cp -r -p /source/* /destination/ (安装文件夹的实际名称并不重要)

由于修复原始分区失败,并且我认为我已经备份了所有内容,因此我格式化了源分区。

现在分区修复后,将数据放回去。

cp -r -p /目标/* /源

必须解决一些 grub 错误和 fstab 中的 UUID。

因此它启动了,但出现错误,抱怨 /usr/local 和其他几个位置。

研究表明这些位置是子卷。

其中大多数相对无害,因为我可以重新安装它们。然而,变量里面有一些mysql数据库。

我的数据消失了吗?为什么没有CP复制吗?最重要的是,如何将所有文件复制到另一个分区,以便我可以格式化(文件系统损坏超出--repair)原始文件,并将文件复制回来而不会因子卷等原因丢失数据?

答案1

当你移动隔板的那一刻我的心就停止了。

此类磁盘操作是危险的。特别是如果您没有经过验证的备份。

校验和错误是 BTRFS 告诉您文件已损坏的方式。尝试让 BTRFS 相信文件没问题可能不是您想要的。

cp不复制子卷。相反,它将它们复制为目录。我不知道你是如何备份所有内容的,但听起来它没有备份你的子卷。我建议使用btrfs-sendbtrfs-receive进行备份。

至于您的数据库,如果您格式化了源分区,不幸的是,我认为它们已经消失了。

提示。如果您打算使用 BTRFS,阅读 BTRFS wiki 是一个不错的选择必须。它不是普通的文件系统。您必须熟悉它的功能才能有效地使用它:https://btrfs.wiki.kernel.org/

相关内容