导航菜单

不小心执行了 rm -rf,除了跑路还有其他办法吗?

专注于Java中的高质量技术。欢迎你的关注

作者:justmine

每当我们在生产环境服务器上执行RM命令时,我们总是很紧张,因为我们不小心意外地执行了删除,然后我们必须准备运行。毕竟,人不是机器,更不用说机器有虫子了,哈哈。

那么,如果您真的删除了不应删除的文件,例如数据库,日志或执行文件,该怎么办?有关详细信息,请仔细阅读本文。

1.删除

错误地删除服务器目录/root/selenium/Spider下的MySql.Data.dll文件:

> RM-F /根/硒/蜘蛛/MySql.Data.dll

> LL /根/硒/蜘蛛/MySql.Data.dll

Ls:无法访问/root/selenium/Spider/MySql.Data.dll:没有这样的文件或目录

(1)使用lsof命令查看是否有进程打开/root/selenium/Spider/MySql。数据。目前的DLL文件:

> lsof | grep/root/selenium/Spider/MySql。数据。 DLL

从上面可以看到,删除了当前文件状态。

(2)检查恢复数据是否存在:

/proc//fd:进程操作的文件描述符目录。

86:文件描述符。

>;目录/proc//fd/86

<> > >

(3)使用I/O重定向还原文件

>;cat/proc//fd/86>;/根/selenium/spider/mysql.data.dll

>;ls-l/root/selenium/spider/mysql.data.dll

-rw-r--r--1根 feb 10 120 x 1778 03/root/selenium/spider/mysql.data.dll

重新运行程序:

解释恢复的文件是否正常。

前面的模拟场景演示了还原文件的整个过程,然后说明了什么是原则以及在什么情况下可以还原文件。

在linux系统中,每个运行的程序都有一个彼此隔离的主机进程,这个主机进程由/proc/process(linux本质上是一个文件系统)的数目表示,例如ls-l/proc/,用进程pid 查看进程信息。

程序运行时,操作系统将为当前进程打开一个内存区域。对于从属文件,操作系统将发出文件描述符来读写文件。当我们执行rm -f删除文件时,只需删除文件的目录索引节点,对文件系统不可见,但对打开它的进程仍然可见,也就是说,您仍然可以使用以前发出的文件描述符来读取和写入文件,它正是使用这个原理,所以我们可以使用I/O重定向恢复文件的方式。

如果你误操作意外删除了文件,请不要担心,首先使用lsof查看打开文件的进程,然后使用cat/proc /进程ID/fd /文件描述符查看恢复数据,最后使用I /重定向。恢复文件。

来自