从 ext4 磁盘中恢复被误删除的文件

1.问题
因误操作,把磁盘中部分的文件删除了,需要进行恢复。
※ 注意:
在进行恢复前,不要对需要恢复的分区进行写入的操作。
如果分区在单独的磁盘上,应该把该磁盘卸载后,进行修复。(非 mount 状态)
如果分区与根分区在同一个磁盘上,那么,可以把分区挂载为 ro 只读状态;

mount -o remount,ro /dev/sdX1

如果需要修复的就是根分区所在的分区,那么,只能把机器关闭后,把磁盘挂载到其他的机器上进行修复。
◎ 修复的原理:
通过遍历文件系统的 journal ,找到对应的 inode 位置,然后组成正常的文件。
所以,若使用 mkfs.ext4 等格式化的磁盘,superblock 全部被刷写,则是无法修复的。

2.解决
通过 extundelete 工具可以进行尝试修复。
安装需要编译,编译前应安装 e2fsprogs-devel 软件包以及 gcc 等编译工具。
解压后,执行./configure 和 make install
然后对指定的分区进行扫描即可:

[root@demo ~]# extundelete –restore-all /dev/vdc1
NOTICE: Extended attributes are not restored.
Loading filesystem metadata … 160 groups loaded.
Loading journal descriptors … 25677 descriptors loaded.
Searching for recoverable inodes in directory / …
57192 recoverable inodes found.
Looking through the directory structure for deleted files …
1 recoverable inodes still lost.

若能找到误删除的文件,所有恢复的文件默认会放在当前目录的 RECOVERED_FILES 目录中,需要注意可用磁盘的大小。

若能准确知道需要进行恢复文件的删除时间,可以考虑加入 –after 参数:

# extundelete –restore-all –after $(($(date +%s) – 7200)) /dev/sdX1

恢复时,还可以指定 inode、文件路径、目录等参数:

–restore-inode ino[,ino,…]
Restore the file(s) with known inode number 'ino'.
The restored files are created in ./RECOVERED_FILES
with their inode number as extension (ie, file.12345).
–restore-file 'path' Will restore file 'path'. 'path' is relative to root
of the partition and does not start with a '/'
The restored file is created in the current
directory as 'RECOVERED_FILES/path'.
–restore-files 'path' Will restore files which are listed in the file 'path'.
Each filename should be in the same format as an option
to –restore-file, and there should be one per line.
–restore-directory 'path'
Will restore directory 'path'. 'path' is relative to the
root directory of the file system. The restored
directory is created in the output directory as 'path'.
–restore-all Attempts to restore everything.

对应 superblock 部分损坏的情况,可以另外指定 backup superblock 位置进行修复:

-b blocknumber Uses the backup superblock at blocknumber when opening
the file system.

3.参考文档
undelete a just deleted file on ext4 with extundelete
http://unix.stackexchange.com/questions/122305/undelete-a-just-deleted-file-on-ext4-with-extundelete

undelete 官网
http://extundelete.sourceforge.net/

undelete 源码:
extundelete-0.2.4.tar.bz2

从 ext4 磁盘中恢复被误删除的文件下载文件
这个文件只能在登入之后下载。请先 注册 或 登入

原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/98243.html

(0)
上一篇 2021年8月20日
下一篇 2021年8月20日

相关推荐

发表回复

登录后才能评论