You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从dd整盘镜像的gz压缩文件中挂载有效分区遇到问题

从dd整盘镜像的gz压缩文件中挂载有效分区遇到问题

别急,我之前也碰到过类似的整盘镜像恢复难题,给你几个实用的步骤来尝试恢复数据:

  • 先确认压缩文件完整性:首先得排除是压缩文件本身损坏导致的问题,执行gzip -t your_disk_image.gz检查。如果返回错误,那可能是镜像在生成或传输过程中出了问题;如果检查通过,继续往下走。

  • 直接读取压缩镜像内的分区表:不用完全解压整个大镜像(毕竟250G解压太费空间),直接通过管道查看分区结构:

    zcat your_disk_image.gz | sfdisk -l -
    

    这个命令会输出镜像里的分区信息,重点记下你需要恢复的那个分区的Start(起始扇区)和Size(扇区数)。默认扇区大小是512字节,后面要用到这个数值计算偏移量。

  • 创建指向目标分区的循环设备:利用进程替换和losetup直接挂载压缩镜像里的指定分区,不用先解压。假设目标分区的起始扇区是4096,大小是1000000扇区,命令如下:

    # 计算偏移量和大小(字节)
    OFFSET=$((4096 * 512))
    SIZE=$((1000000 * 512))
    # 创建只读循环设备,避免误写镜像
    LOOP_DEV=$(losetup -o $OFFSET --sizelimit $SIZE -r -f --show <(zcat your_disk_image.gz))
    

    执行后会输出一个循环设备路径,比如/dev/loop0。

  • 挂载循环设备访问数据:现在就可以尝试挂载这个循环设备了:

    mount -o ro $LOOP_DEV /mnt/recovery
    

    如果挂载成功,你就能在/mnt/recovery下访问目标分区的数据了。

  • 如果分区表损坏无法读取,用数据恢复工具扫描:如果上面的方法因为EFI分区损坏导致分区表读不出来,可以用testdisk直接扫描压缩镜像的数据流:

    zcat your_disk_image.gz | testdisk -
    

    跟着testdisk的向导一步步操作,它会扫描镜像里的分区痕迹,找到有效分区后可以选择恢复分区表,或者直接提取数据。

额外提醒

  • 全程尽量用只读模式(losetup的-r参数、mount的-o ro参数),避免误操作损坏原始镜像。
  • 如果你的机器有多个CPU核心,可以用pigz代替zcat来并行解压,提升速度:把命令里的zcat换成pigz -dc即可。

备注:内容来源于stack exchange,提问作者numonium

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 08:05:28