怎么找到目录所删的序号linux
怎么找到目录所删的序号linux详细介绍
在 Linux 中,删除目录后若想找到其对应的 inode 编号(文件 / 目录的唯一标识符),通常需要通过文件系统底层工具或未被覆盖的残留信息来恢复。以下是具体步骤:
一、前提条件
- 立即停止写入操作:删除后切勿在该分区写入新数据,避免覆盖残留的 inode 信息。
- 确认文件系统类型:常用工具(如
extundelete)仅支持特定文件系统(如 ext4/ext3),xfs 需用其他工具。
二、方法 1:通过
lsof 查找被删除但仍被占用的目录
如果删除的目录仍被某个进程打开(例如终端当前目录未退出),可通过 lsof 查看残留的 inode:
bash
- 关键列:
NODE即为被删除目录的 inode 编号(示例中的123456)。
三、方法 2:使用
extundelete 扫描分区(适用于 ext 系列文件系统)
- 安装工具:bash
extundeleteyum extundelete
- 卸载分区(可选,避免数据变动):bash
/dev/sdaX - 扫描分区并查找删除的目录:bash
extundelete /dev/sdaXextundelete /dev/sdaX --restore-all
- 扫描结果中会列出删除的目录及其 inode 编号,结合目录名筛选目标。
四、方法 3:通过
debugfs 手动查找(高级方法)
- 挂载文件系统为只读(避免修改):bash
ro /dev/sdaX /mnt - 进入 debugfs 交互模式:bash
debugfs /dev/sdaX - 查找删除的目录名(需知道部分路径或名称):bash
debugfs: lsdel- 直接匹配目录名,获取对应的 inode 编号(如
123456)。
- 直接匹配目录名,获取对应的 inode 编号(如
五、方法 4:通过历史命令或备份恢复(辅助手段)
- 查看历史操作:bash
- 检查备份:
- 若启用过
rsync、tar等备份,直接从备份中恢复目录,无需查找 inode。
- 若启用过
六、注意事项
- 权限问题:上述操作需
root权限(使用sudo)。 - 文件系统限制:
extundelete/debugfs仅适用于 ext 系列文件系统,xfs 需用xfs_db或专业数据恢复工具。- NTFS 文件系统需借助
ntfsundelete等工具。
- 数据恢复工具:若目录已被彻底删除(inode 被覆盖),可能需要付费工具(如
TestDisk)或专业服务。
总结
优先使用 lsof 检查是否有残留进程占用,快速获取 inode;若无效,针对 ext 文件系统用 extundelete 或 debugfs 扫描分区,结合目录名匹配 inode 编号。操作时务必停止分区写入,提高恢复成功率。