#image #mount #hard-drive #io-error #ddrescue

bin+lib ddr-mount

ddr-mount 允许您在跳过坏扇区的同时挂载镜像文件

5 个稳定版本

1.1.4 2022年5月29日
1.1.3 2022年5月15日
1.1.2 2022年5月14日
1.1.1 2022年5月13日
1.1.0 2022年5月12日

#2684 in 命令行工具

AGPL-3.0-only

79KB
956

ddr-mount

FOSSA Status Rust

这是一个简单的工具,可以挂载带有映射文件的 ddrescue 镜像,使它能够向任何 Linux 恢复工具呈现任何坏扇区或未尝试区域的 I/O 错误。(当前测试表明,在 WSL 下此功能不工作)。要挂载镜像,您需要镜像和 ddrescue 映射文件。虽然 ddrescue 是创建这两个文件的明显工具,但其他工具也可以创建与 ddrescue 兼容的映射文件(如 HDDSuperClone)

用法

一旦您有了镜像,请挂载该镜像。确保获取扇区大小(挂载镜像的默认扇区大小为 512 字节,但现代硬盘使用 4096 字节的扇区大小)

sudo ddr-mount mount -i <path to image file> -m <path to map file> -b <sector size>

这将创建一个块设备在 /dev/mapper/ddrm#(确切数字将会打印),具有指定的扇区大小,在 -b 参数中指定。然而,扇区大小必须是 512 字节的倍数。镜像本身是只读挂载,因此没有改变镜像文件的风险。

完成后,您可以卸载镜像

sudo ddr-mount unmount <device name like drrm0>

您也可以卸载所有镜像

sudo ddr-mount unmount-all

最后,您可以使用以下命令列出所有挂载的镜像

ddr-mount list

安装

ddr-mount .deb 文件可在 发布页面 获取,用于 Ubuntu 二进制文件(仅限 x64 架构)。还有一个适用于 64 位 Intel 系统的通用 Linux 可执行文件,应该适用于大多数 Linux 发行版,前提是已安装 dmsetuplosetup。如果您已安装 rustup(请参阅构建指南),可以通过运行以下命令进行安装:

cargo install ddr-mount

除非您自己构建并手动移动 bash 和 fish 自动完成以及 man 页面文件(请参阅构建指南),或者使用 deb 文件,否则自动完成和 man 文件不会安装。但是,您可以按照构建指南生成 man 文件和完成文件,或者手动下载它们并按照构建指南中的步骤进行安装。

升级说明

在升级之前,请确保卸载所有镜像。

如果之前使用 deb 软件包安装了旧版本,请首先卸载旧版本

sudo apt remove ddr-mount

然后像往常一样使用 deb 文件安装 ddr-mount

如果您使用 cargo 进行安装,请再次运行 cargo install ddr-mount

如果您使用了 ddr-mount 的 Linux 二进制文件,只需用新版本替换即可。可能需要再次运行 chmod +x <ddr-mount>

构建指南

我们可以使用 cargo 构建 ddr-mount。目前已在 rustc 版本 1.60 下进行了测试。要构建,我们首先需要安装 rustup。确保在 Ubuntu 上安装构建工具,如 build-essential。开始之前,请运行以下命令来安装 rustup

curl https://sh.rustup.rs -sSf | sh

然后,我们可以构建

git clone https://github.com/CKingX/ddrescue_error_mapping.git
cargo install --path ./ddrescue_error_mapping

现在您可以在终端中通过键入 ddr-mount 运行它!升级就像再次克隆仓库并再次运行 cargo install 命令一样简单。

如果您只想构建二进制文件,可以运行以下命令来构建调试二进制文件

cargo build

以及以下命令来构建发布二进制文件

cargo build --release

您应该在 ./target/{debug/release}/ddr-mount 中找到输出

bash 完成文件应在 ./target/{debug/release}/build/ddr-mount-{hash}/out/ddr-mount.bash 中找到(您可能会找到多个 ddr-mount-{hash} 文件夹。按修改日期排序,然后找到包含 out 文件的文件夹)。将 ddr-mount.bash 文件复制到 /usr/share/bash-completion/completions/ 并重命名为 ddr-mount 以在 bash 中自动完成。Fish 完成文件也找到了,称为 ddr-mount.fish。

Man 文件也应与 ddr-mount.bash 的同一 out 文件夹中找到。将其移动到 /usr/share/man/man1/ddr-mount={subcommands}.1

限制

  • ddr-mount 目前不支持在 WSL 下运行
  • 在 Ubuntu 20.04 和 Ubuntu 18.04 上进行了测试。目前,ddr-mount 不支持在 WSL 下运行
  • 只能挂载扇区大小为 512 字节整数的镜像
  • 在 macOS 上,ddrescue 会为 9223 PB 的磁盘创建一个映射文件,因为 macOS 不报告磁盘大小。这会导致挂载失败。有关更多信息以及与 ddrescue 一起创建有效映射文件的可能解决方案,请参阅此链接

许可

FOSSA Status

依赖关系

~7–20MB
~248K SLoC