首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >批处理带有调试器的dd救援映射文件

批处理带有调试器的dd救援映射文件
EN

Unix & Linux用户
提问于 2018-10-05 13:05:45
回答 1查看 663关注 0票数 2

我有一个由mapfile生成的ddrescue,它列出了418个坏扇区,每行看起来如下(减号表示一个坏块):

代码语言:javascript
复制
Position      Size
0x1CC7C68000  0x00001000  -

通过将以字节为单位的位置转换为分区相对扇区号,我可以使用debugfs查询inode编号,然后查找已损坏的文件的路径。对于将近2000个坏块来说,手动执行这个操作是不可行的,所以我想将其自动化,是否有一种在文件系统上执行一系列命令的脚本debugfs的方法?

下面是我目前正在为一个破碎的扇区获取文件名所做的工作:

  1. ddrescue mapfile中的位置是相对于磁盘开始的字节。首先,我用512除以扇区数,然后减去分区的起始位置:第一扇区的划分: 91914240坏块位置: 0x1CC7C68000在十进制: 123610759168绝对扇区位置: 123610759168 / 512 = 241427264分区上的相对块位置: 241427264 - 91914240 = 149513024

因此,坏扇区相对于分区启动位于149513024,使用debugfs,我现在可以找到inode:

代码语言:javascript
复制
$ debugfs
debugfs: open /dev/sdd3
debugfs: icheck 149513024
Block       Inode number
149513024   1183169
debugfs: ncheck 1183169
Inode   Pathname
1183169 /username/foo/bar/baz

我想自动化这个过程,这样我就可以将块位置的列表传递给debugfs,将这些块解析为inode,过滤inode以排除未映射的inode,然后使用ncheck解析其余节点的路径名。通过调试器和一些shell脚本,这是可能的吗?

EN

回答 1

Unix & Linux用户

发布于 2019-02-28 16:21:53

在我的rpi3b+ SD卡死后,我今天不得不这样做。最后,我编写了一个python脚本,完成了您在上述bash脚本中所做的工作,但它将自动显示文件路径。您可以在这里查看:https://github.com/zkrx/rescue2path

在这个解决方案中,我还检查了尚未刮掉的数据块('/')。刮擦在这里花了很长时间,我在它完成之前就停了下来。

Arch中的这个条目特别有用:https://wiki.archlinux.org/index.php/Identify_受损_文件

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/473453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档