• 恢复Linux误删文件


    不小心执行了rm删除了某些文件,是有点倒霉。不过我一般都会设置alias rm='rm -i'在删除的时候需要输入Y才能真正删除,当然此时用rm -f那也会直接删除了。
    因此找了两种方案恢复误删的文件。

    方法一

    适用系统内置debugfs,适用于删除不久,文件inode还存在的方式。

    1.往文件中写入数据
    root@janbar:~/test# date | md5sum > test
    
    2.查看文件内容
    root@janbar:~/test# cat test 
    462bbd830ae8f1f4ab65bcb644063f11  -
    
    3.删除文件
    root@janbar:~/test# rm test 
    rm: remove regular file 'test'? y
    
    4.查看被删除文件目录属于哪个分区
    root@janbar:~/test# df .
    Filesystem     1K-blocks     Used Available Use% Mounted on
    /dev/sda1       57666812 19138652  35575816  35% /
    
    5.执行debugfs工具
    root@janbar:~/test# debugfs
    debugfs 1.42.13 (17-May-2015)
    
    6.打开分区
    debugfs:  open /dev/sda1
    
    7.查看目录内容,记得一定是绝对路径,且不能出现 ~ 这种符号
    debugfs:  ls -d /root/test
     2752514  (12) .    2752513  (4084) ..   <2759333> (4072) test
    <2759335> (4056) test.old
    
    8.将上图被删除文件的inode号按照下面命令执行,必须为 <> 尖括号括起来的才行
    debugfs:  logdump -i <2759333>
    Inode 2759333 is at group 336, block 11010293, offset 512
    Journal starts at block 28111, transaction 578064
    Found sequence 565491 (not 578175) at block 29094: end of journal.
    
    9.退出调试
    debugfs:  quit
    
    10.执行如下命令可以恢复文件,bs 为上面的 offset,skip 为上面的 block
    root@janbar:~/test# dd if=/dev/sda1 of=/root/test/test.old bs=512 count=1 skip=11010293
    1+0 records in
    1+0 records out
    512 bytes copied, 0.000281056 s, 1.8 MB/s
    

    方法二

    grep整个分区,适用inode丢失,且只能是纯文本文件

    1.查看被删除文件目录属于哪个分区
    root@janbar:~/test# df .
    Filesystem     1K-blocks     Used Available Use% Mounted on
    /dev/sda1       57666812 19138652  35575816  35% /
    
    2.然后使用grep对分区进行搜索,需要记得文档中的某些关键字
    grep -a -B 30 -A 150 'func main() {' /dev/sda1 > test.go
    其中-a表示把分区看成文本形式(分区本身是二进制形式的)
    -B 30 -A 150表示找到搜索的内容就打印前面30行和后面150行
    如果分区比较大可能需要一定的搜索时间,完成之后打开test.go
    幸运的话你会发现在一堆乱码中镶嵌着你要恢复的本文
    
    作者:janbar
    本文版权归作者和博客园所有,欢迎转载,转载请标明出处。喜欢我的文章请 [关注我] 吧。
    如果您觉得本篇博文对您有所收获,可点击 [推荐] [收藏] ,或到右侧 [打赏] 里请我喝杯咖啡,非常感谢。
  • 相关阅读:
    准备 FRM 考试——方法、工具与教训
    930. 和相同的二元子数组 前缀和
    1906. 查询差绝对值的最小值 前缀和
    剑指 Offer 37. 序列化二叉树 二叉树 字符串
    815. 公交路线 BFS
    518. 零钱兑换 II dp 完全背包
    1049. 最后一块石头的重量 II dp
    5779. 装包裹的最小浪费空间 二分
    5778. 使二进制字符串字符交替的最少反转次数 字符串 滑动窗口
    474. 一和零 dp
  • 原文地址:https://www.cnblogs.com/janbar/p/14374200.html
Copyright © 2020-2023  润新知