51学通信论坛2017新版

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2789|回复: 0
打印 上一主题 下一主题

Linux下恢复误删文件:思路+实践

[复制链接]

 成长值: 15613

  • TA的每日心情
    开心
    2022-7-17 17:50
  • 2444

    主题

    2544

    帖子

    7万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    74104
    跳转到指定楼层
    楼主
    发表于 2017-11-15 21:51:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    周五篮球群里有人问误删文件了怎么恢复,得知是ext4文件系统之后我推荐了ext4magic这个工具,然后又有人提到了xfs的话怎么办,正好前几天看到Dave Chinner在邮件列表里提到了这个问题,他推荐的工具是xfs_irecover。这里就稍微总结一下Linux下误删文件如何恢复。
    1. 当发现误删了文件之后,立即把文件系统卸载掉,或者remount成ro状态,就是不要再写了,让数据不要被其他数据覆盖。因为大部分文件系统在删除文件的时候只是把这个文件标记成删除,把文件所使用的数据块标记成可用,但是上边的数据还没有被清除,数据还是在的。那么这个时候不再写硬盘也就保证了数据块不会被其他数据覆盖掉,也就还有希望找回来。
    2. 这一步是可选的。最好把要恢复的分区做一个镜像,dd if=/dev/sda5 of=/path/to/image/file bs=4k,这样在恢复的时候在镜像上尽兴,就算恢复出错数据被毁掉了,那也是镜像。
    3. 根据不同的文件系统,选用不同的工具来找回删除的文件。ext3推荐用ext3grep,ext4用ext4magic,其实ext4magic是基于ext3grep的,而且ext4magic也能处理ext2/3文件系统;xfs用xfs_irecover,xfs_irecover的manpage在这里。
    4. 至于能够恢复多少数据出来,那就看人品了
    这里用ext4做个例子
    # create ext4 fs and copy some files there
    fallocate -l 16m ext4.img
    losetup -f --show ext4.img
    mkfs -t ext4 /dev/loop0
    mount /dev/loop0 /mnt/ext4
    cp /mnt/ext4/
    sync
    # delete some files
    rm /mnt/ext4/*
    # umount the ext4 fs, this is important!
    umount /dev/loop0
    # make a copy of the fs
    dd if=/dev/loop0 of=ext4-copy.img bs=4k
    # run ext4magic on the image
    ext4magic -m -d outputdir ext4-copy.img
    # some sample output from the command
    eguan@localhost:~/workspace/src/kernel$ sudo /home/eguan/bin/ext4magic -m ext4.img -d testdir
    Warning: Activate magic-scan or disaster-recovery function, may be some command line options ignored
    "testdir" accept for recoverdir
    Filesystem in use: ext4.img
    Using internal Journal at Inode 8
    Activ Time after : Sun Jun 7 22:43:54 2015
    Activ Time before : Sun Jun 7 23:02:18 2015
    Inode 2 is allocated
    Unknown code ext2 45 #0 for block bitmap for ext4.img
    Warning: error-NR 2133571363 can not found file: /
    MAGIC-1 : start lost directory search
    MAGIC-2 : start lost file search
    -------- testdir/MAGIC-2/image/jpeg/I_0000000012.jpg
    -------- testdir/MAGIC-2/image/jpeg/I_0000000013.jpg
    -------- testdir/MAGIC-2/image/jpeg/I_0000000014.jpg
    MAGIC-2 : start lost in journal search
    MAGIC-3 : start ext4-magic-scan search
    ext4magic : EXIT_SUCCESS
    更多使用方法看ext4magic的manpage吧,就在源码包里。

    声明:本文转载自网络。版权归原作者所有,如有侵权请联系删除。
    扫描并关注51学通信微信公众号,获取更多精彩通信课程分享。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|51学通信技术论坛

    GMT+8, 2025-1-31 12:53 , Processed in 0.085416 second(s), 31 queries .

    Powered by Discuz! X3

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表