Linux下通过grep命令恢复被删文件的内容

我们之前已经介绍了在linux下通过构建一个类似于windows的回收站来恢复被删除的文件。 今天我们再来介绍一个通过grep命令来恢复被删除文件的内容的方法。 我们都知道,当linux的删除命令rm执行删除文件操作后,文件数据并没有从磁盘存储上移除,所以只要文件内容没有被覆盖掉,文件内容依然有被恢复的可能性。

因为linux下一切数据皆以文件的形式存放,依旧是说磁盘设备也是以文件的形式存在。所以我们可以通过grep命令来过滤查找出我们删除文件的内容,并将其重定向到另一个文件里,这也也就能达到恢复文件的目的。

1# 确定根目录所在的磁盘

执行命令:

#mount | grep sda

命令输出如下:

root@devops:~/osetc# mount | grep sda
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)

2# 删除文件

执行rm命令:

#rm fio.txt

命令输出如下:

root@devops:~/osetc# cat fio.txt
delete line 1
delete line 2
delete line 3
delte line 4
delete line 5

root@devops:~/osetc# rm fio.txt

3# 通过grep命令恢复被删除文件fio.txt 的内容到recovery.txt里

执行下面命令:

#grep -a -B 10 -A 10 'delete line 1' /dev/sda1 >recovery.txt

参数介绍

-a 将二进制文件作为普通文件看待

-B, –before-content 过滤出指定模式串之前的特定数目的行

-A, –after-content 过滤出指定模式匹配之后的特定数目的行


99%的人还阅读了:

Leave a Reply