linux误删文件恢复 linux误删文件怎么恢复

第一,linux误删数据的场景在实际工作中,朋友们可能会误删除linux服务器上的文件。而且越是高级工程师越容易犯这样的错误,而且打代码的速度够快。啪嗒rm -rf就是回车,然后就该打

本文最后更新时间:  2023-03-18 18:52:50

第一,linux误删数据的场景

在实际工作中,朋友们可能会误删除linux服务器上的文件。而且越是高级工程师越容易犯这样的错误,而且打代码的速度够快。啪嗒rm -rf就是回车,然后就该打脸了。新人在操作单据的时候往往会害怕,反复确认,但是不容易出错。如果你也是一个有多年工作经验的工程师,提醒自己,所有淹死的人都会游泳。我们需要区分两种情况来恢复误删除的文件:

第一种场景:被删除的文件正在被进程使用第二种场景:文件没有被任何进程使用

第一种场景的数据恢复相对简单,第二种场景相对麻烦。

2.场景1数据恢复实验

第一种情况:被删除的文件正被另一个进程使用。让我们创建一个独立的目录testdel来完成我们的实验。然后使用echo命令创建一个文件test-recovery.txt,并将其放在testdel目录中。文件的内容是“测试文件删除恢复”。重点来了:我们一直用命令tail来监控这个文件,说明这个文件已经被tail进程监控占用了。

nbsp;mkdir?./testdel;nbsp;echo?"test?file?delete?recovery"??>?./testdel/test-recovery.txt;nbsp;tail?-f?./testdel/test-recovery.txt;

这时,我们打开一个新的linux终端,完成文件删除操作。文件删除后,我们用ls来命名,在这个目录下看不到任何文件。

nbsp;rm?-fr?./testdel/test-recovery.txt;nbsp;ls?-l?./testdel

让我们恢复文件并执行下面的lsof命令。在返回的结果中,我们可以看到test-recovery.txt (deleted)已经被删除,但是有一个进程尾在使用它。尾进程的进程号是1535。

nbsp;lsof?|?grep?test-recovery.txt;tail??????1535????????kafka????3r??????REG??253,2????????26??34095906?/home/kafka/testdel/test-recovery.txt?(deleted)

然后我们使用cd /proc/1535/fd命令进入这个进程的文件目录。1535是tail进程的进程id,这个文件目录包含了这个进程正在打开和使用的几个文件。

我们看到名为3的文件,这是我们刚刚“误删除”的文件,所以我们使用下面的cp命令将其恢复回来。至此,流程引用文件的错误删除和恢复完成。

比较/3/home/Kafka/testdel/test-recovery . txt;

三。场景2数据恢复

对于场景2,如果没有程序使用该文件,文件被删除后恢复起来会有点麻烦。首先,我们需要区分当前操作系统挂载的磁盘目录的文件格式。例如,执行cat /etc/fstab将得到以下结果。

除了xfs磁盘文件格式,linux中还常用ext4磁盘文件格式。每个磁盘文件格式、数据恢复方法和使用的工具都不同。鉴于篇幅问题,本文就不介绍了。请关注我,我会继续更新!

四。深入-为什么数据可以恢复?

第一种情况:当一个文件被一个程序使用时,linux有两个文件计数器。

i_count计数器:该文件可能被多个进程使用,每一个进程使用该文件,i_count数值都会加1。反之,进程释放该文件的引用,则该计数器减1i_nlink作用是记录该文件产生的硬链接的次数(在linux中可以使用ln命令创建文件的硬链接)。

当上述两个计数器都为0时,文件实际上处于没有进程使用的状态,直接被删除。如果一个进程使用它,那么文件的i_count值不为0,所以可以在/proc/<>:在/fd目录中找到它

第二种情况,此时没有进程在使用被删除文件,被删除文件的两个计数器i_count和i_link此时都为0。这个时候要明白一个概念。

操作系统文件删除:操作系统层面的删除文件,只是删除文件的inode信息。删除inode信息之后,该文件对于操作系统及操作系统的用户不可见了。磁盘文件物理删除:我们知道物理磁盘是由一个个数据块组成的,所以如果想恢复文件,我们需要找到存放文件的数据块block单元,真正在磁盘上存储文件的block暂时并未被删除(准确的说是暂时并未被覆盖)。

注意:存储数据块的块单元的文件内容会一直存在吗?答案是否定的,因为数据块的内容已经被删除了,所以数据块可以被其他进程重用来写数据。所以,当你发现自己误删了一个非常重要的文件时,你需要做的第一件事就是从操作系统中卸载磁盘,或者停止所有进程向磁盘写入数据。因为写数据操作,可能会占用和覆盖你“误删文件”所在的数据块。一旦数据块被写入的数据覆盖,你的数据文件就再也找不到了。

温馨提示:内容均由网友自行发布提供,仅用于学习交流,如有版权问题,请联系我们。