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 命令行工具
79KB
956 行
ddr-mount
这是一个简单的工具,可以挂载带有映射文件的 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 发行版,前提是已安装 dmsetup
和 losetup
。如果您已安装 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 一起创建有效映射文件的可能解决方案,请参阅此链接。
许可
依赖关系
~7–20MB
~248K SLoC