如何正确地将备份恢复到损坏的 btrfs?

如何正确地将备份恢复到损坏的 btrfs?

我的 btrfs 有一定程度的损坏,日志中看起来像这样:

BTRFS warning (device dm-0): csum failed root 261 ino 638264 off 6221824 csum 0x3315c12e expected csum 0xc1eecea6 mirror 1
BTRFS error (device dm-0): bdev /dev/mapper/cryptroot errs: wr 16, rd 1, flush 0, corrupt 16112, gen 0

我还有一个外部存储的快照,没有损坏。我应该用什么来恢复?我考虑 btrfs 发送/接收或 rsync,但我不确定它们是否可以处理文件损坏并且不会弄乱任何元。我也许可以重新格式化、重写和重新加密整个磁盘,但这将花费很长时间。

btrfs check仅报告校验和错误。btrfs check --repair没有帮助。

更新:

所以我用 恢复了rsync -aiAXHSc --cc=xxh3 --inplace --del。现在一切正常。曾经腐败的一切现在都好了。但。

btrfs scrub仍然报告 19000 个块的 csum 错误。使用 检查了一些有问题的 inode btrfs inspect-internal inode-resolve。他们中的大多数人都回来了ERROR: logical ino ioctl: No such file or directory。其中一些人返回的文件完全没有问题。日志中提到的带有 csum 错误的文件要么正常,要么不存在。 btrfs check和以前一样只返回 csum 错误。

我不知道发生了什么事。

相关内容