AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 786387
Accepted
TheYokai
TheYokai
Asked: 2024-11-10 08:09:44 +0800 CST2024-11-10 08:09:44 +0800 CST 2024-11-10 08:09:44 +0800 CST

恢复被错误地用 100MB FAT 存储覆盖的 BTRFS 驱动器根树

  • 772

我有一个 4TB 的驱动器,上面有一个 BTRFS 文件系统(没有分区),它被 Windows 安装程序错误地覆盖,它确定该空间未使用并且会将其用于其他用途(恢复?)并在其上放置一个 100MB 的 FAT 分区。

简而言之,驱动器的所有内容目前都无法访问。大多数情况下,我的许多真正重要的文件都备份在我的家庭服务器上,因此损坏并不严重,但总会有一些恶意文件在备份中遗漏,只有在备份时才会发现。因此,我一直在寻找某种方法来恢复文件系统或浏览磁盘上仍然存在的任何内容。

到目前为止,我已经完成了以下工作:

我已经运行,btrfs rescue super-recover输出以下内容:

$ sudo btrfs rescue super-recover -v /dev/sda
All Devices:
    Device: id = 1, name = /dev/sda

Before Recovering:
    [All good supers]:
        device name = /dev/sda
        superblock bytenr = 65536

        device name = /dev/sda
        superblock bytenr = 274877906944

    [All bad supers]:
        device name = /dev/sda
        superblock bytenr = 67108864
Make sure this is a btrfs disk otherwise the tool will destroy other fs, Are you sure? [y/N]: y
checksum verify failed on 25001984 wanted 0x00000000 found 0xb6bde3e4
checksum verify failed on 25001984 wanted 0x00000000 found 0xb6bde3e4
ERROR: cannot read chunk root
Failed to recover bad superblocks

我也尝试运行sudo btrfs rescue chunk-recover,但结果也是类似的:找不到有效的树根。

接下来,我尝试使用上面的 ID 将磁盘恢复到文件位置:

$ sudo btrfs restore -t 78515 -u 1 /dev/sda /tmp/a
No valid Btrfs found on /dev/sda
Could not open root, trying backup super
checksum verify failed on 25001984 wanted 0x00000000 found 0xb6bde3e4
checksum verify failed on 25001984 wanted 0x00000000 found 0xb6bde3e4
checksum verify failed on 25001984 wanted 0x00000000 found 0xb6bde3e4
bad tree block 25001984, bytenr mismatch, want=25001984, have=0
ERROR: cannot read chunk root
Could not open root, trying backup super

类似的问题:由于 100MB FAT,不再有有效的根!

最后,我知道可以使用浏览文件选项testdisk,但似乎无法浏览 BTRFS 文件系统中所有剩余的文件:唯一的选项是克隆磁盘的映像。

是否有人有任何潜在的解决方案,可以浏览无效的 BTRFS 文件系统上的单个文件或部分重新创建根目录?我实际上不需要恢复整个文件系统,理想情况下,我可以从子卷(例如@pictures)中获取尽可能多的文件,这些文件仍然足够“有效”以成为真实文件。有没有办法重新创建 BTRFS 文件系统的根树以尝试恢复磁盘上的尽可能多的文件?

当我这样做时,我可以看到一个文件名表,sudo strings /dev/sda | less这似乎意味着我可能能够在磁盘的下方找到与这些文件相关的一些数据,但我不知道如何检查。

data-recovery
  • 1 1 个回答
  • 27 Views

1 个回答

  • Voted
  1. Best Answer
    dougmc
    2024-11-10T08:47:46+08:002024-11-10T08:47:46+08:00

    我不知道 btrfs 具体如何在磁盘上存储数据,但是我知道其他文件系统(例如 ext[2-4])倾向于将元数据(例如 inode)放在磁盘的前面,如果 btrfs 也是一样,那么覆盖前 100 MB 可能会擦除大部分或全部元数据。

    也就是说,如果它只创建了 100 MB 的文件系统,而没有填充它,那么它可能只会覆盖 100 MB 的一部分,因此大部分元数据可能都会保留下来。也许吧。

    更熟悉 btrfs 的人将能够更好地帮助您解决所走的路径。

    然而,还有另一条可能的途径,一条不涉及文件系统结构的详细知识的途径:寻找已知的数据签名。

    有一个名为“photorec”的工具可以扫描磁盘映像并查找已知文件格式,并将找到的任何内容复制。它最初是为从 SD 卡恢复 jpeg 而编写的,但后来扩展到涵盖许多已知文件格式。

    因此,如果您所做的没有任何结果,您可以尝试 photorec。

    • 2

相关问题

  • 将目录移动到不存在的位置?

  • MDADM - 灾难恢复或从我将 RAID5 阵列放入的状态继续前进

  • 如何从 2 磁盘 NAS 中曾经属于 RAID1(MD 上的 LVM)的磁盘恢复/复制数据?

  • 用于移动使用 fdupes 或其他重复数据删除包删除的保留文件的脚本

  • dd_rescue 和 ddrescue 有什么区别,什么时候更喜欢哪一个?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve