在实际的工作中,朋友们可能会将linux服务器上的文件不小心误删除掉了。而且越是资历老的工程师越容易犯这样的错误,敲代码的速度也是够快,啪啪rm -rf一个回车,然后就是打脸时刻 。新人操作文件时往往战战兢兢、反复确认,反而不容易出错。如果你也是一个有多年工作经验的工程师,也给自己提个醒:淹死的都是会游泳的。我们需要区分两种场景来进行误删除文件的恢复:
-
第一种场景:被删除的文件正在被进程使用
-
第二种场景:文件没有被任何进程使用
第一种场景的数据恢复相对简单一些,第二种相对麻烦些。
第一种场景:被删除的文件正在被其他进程使用。我们先创建一个独立目录testdel,用于完成我们的实验。然后使用echo命令创建一个文件test-recovery.txt,放在testdel目录下,文件内容是:“test file delete recovery”。重点来了:我们使用命令tail来一直监听这个文件,表示这个文件一直被tail进程监听占用。
$ mkdir ./testdel;
$ echo "test file delete recovery" > ./testdel/test-recovery.txt;
$ tail -f ./testdel/test-recovery.txt;
此时我们新打开一个linux终端,完成文件删除操作,文件删除之后使用ls命名在该目录下查看不到任何的文件。
$ rm -fr ./testdel/test-recovery.txt;
$ ls -l ./testdel
下面我们来进行文件的恢复,执行下文中的lsof命令,在其返回结果中我们可以看到test-recovery.txt (deleted)被删除了,但是其存在一个进程tail使用它,

最低0.47元/天 解锁文章
580

被折叠的 条评论
为什么被折叠?



