linux文件被覆盖如何恢复,linux如何恢复刚删除的文件

author:skate

时间: 2013/10/12

linux恢复意外删除的文件

如果进程打开文件时文件仍处于打开状态,则即使将其删除也会保留在磁盘上。 这意味着进程不知道文件已被删除,并且可以对打开文件时提供的文件描述符进行读写。 由于相应的目录索引节点已被删除,因此除进程外不会显示此文件。 在这种情况下,可以使用lsof恢复这些文件。

/proc目录包含反映内核和进程树的各种文件。 /proc目录装载映射到内存的空间,因此这些文件和目录不存在于磁盘上。 因此,在读取和写入这些文件时,实际上是从内存中获取信息。 有关lsof的信息大多存储在进程PID的目录中。 也就是说,/proc/12包含PID12进程的信息。 每个进程目录中都有不同的文件,APP应用程序可以轻松了解进程的内存空间、文件描述符列表、指向磁盘上文件的符号链接以及其他系统信息。 lsof程序使用该信息和有关内核内部状态的其他信息生成其输出。 因此,lsof可以显示进程的文件描述符和相关联的文件名等信息。 通过访问进程的文件描述符,可以找到有关该文件的信息。

以下举例说明

在我/tmp目录下创建脚本文件,总是在后台运行,但在tmp下会被系统定时删除,不想偷懒改写脚本,想找回原来的东西。 具体步骤如下。

1 .查看删除的文件diamon.sh,它不再存在

[根@ centos5~ ] # ll/tmp /

总体28

– rw-r– r–1root root 402 sep 2614336019 load _ tab.sh

srwxrwxrwx1mysqlmysql0sep 1615336020 MySQL.sock

dwx—- 2根根根4096 oct 1215336044 ssh-hip bw 10887

rwx—- 2根根根4096 oct 1016336012 ssh-luxbjf 6337

使用lsof确定当前哪个进程正在打开文件。 “/tmp/diamon.sh”

[ root @ centos5~ ] # lsof|grep diamon

sh 8455 root 255 rreg 253,0173764298/tmp/diamon.sh (已删除) ) ) ) ) ) ) ) )

[根@ centos5~ ] #

从上面的输出中可以看到,过程8455以只读方式打开此文件。 打开的文件描述符为255,文件/tmp/diamon.sh被标记为删除。 然后查看文件’/proc/8455/fd/255 ‘

[根@ centos5~ ] # more/proc/8455/FD/255

#可变

dir=/tmp

是wile (真)

德奥

v _ num=` PS-ef|grep load _ tab|grep-v grep|WC-l `

if [ $v_num -lt 4 ]; 陈真

sh /tmp/load_tab.sh /dev/null 21

fi

道恩

[根@ centos5~ ] #

3 .找到删除的文件了吗? 使用I/O重定向恢复到指定的文件,如下所示

[ root @ centos5~ ] # cat/proc/8455/FD/255/tmp/diamon.sh

检查文件已恢复

[root@centos5 ~]# ll /tmp

总体36

– rw-r—- r—-1root root 173 oct 1216336053 diamon.sh

– rw-r– r–1root root 402 sep 2614336019 load _ test 10.sh

srwxrwxrwx1mysqlmysql0sep 1615336020 MySQL.sock

rwx—- 2根根根4096 oct 1215336044 ssh-hip bw 10887

rwx—- 2根根根4096 oct 1016336012 ssh-luxbjf 6337

[根@ centos5~ ] #

检查恢复的文件的内容是否正常

[根@ centos5~ ] #

[ root @ centos5~~] # more/tmp/diamon.sh

#可变

dir=/tmp

是wile (真)

德奥

v _ num=` PS-ef|grep load _ test|grep-v grep|WC-l `

if [ $v_num -lt 4 ]; 陈真

sh/tmp/load _ test 10.sh/dev/null 21

fi

道恩

[根@ centos5~ ] #

linux恢复删除文件至此已成功完成

总结:

a .文件删除时,不要慌张,尽可能保存现场

b .某些数据库文件意外删除时有效

— -结束— –

快三大小单双稳赚买法re/proc/8455/FD/255

#可变

dir=/tmp

是wile (真)

德奥

v _ num=` PS-ef|grep load _ tab|grep-v grep|WC-l `

if [ $v_num -lt 4 ]; 陈真

sh /tmp/load_tab.sh /dev/null 21

fi

道恩

[根@ centos5~ ] #

3 .找到删除的文件了吗? 使用I/O重定向恢复到指定的文件,如下所示

[ root @ centos5~ ] # cat/proc/8455/FD/255/tmp/diamon.sh

检查文件已恢复

[root@centos5 ~]# ll /tmp

总体36

– rw-r—- r—-1root root 173 oct 1216336053 diamon.sh

– rw-r– r–1root root 402 sep 2614336019 load _ test 10.sh

srwxrwxrwx1mysqlmysql0sep 1615336020 MySQL.sock

rwx—- 2根根根4096 oct 1215336044 ssh-hip bw 10887

rwx—- 2根根根4096 oct 1016336012 ssh-luxbjf 6337

[根@ centos5~ ] #

检查恢复的文件的内容是否正常

[根@ centos5~ ] #

[ root @ centos5~~] # more/tmp/diamon.sh

#可变

dir=/tmp

是wile (真)

德奥

v _ num=` PS-ef|grep load _ test|grep-v grep|WC-l `

if [ $v_num -lt 4 ]; 陈真

sh/tmp/load _ test 10.sh/dev/null 21

fi

道恩

[根@ centos5~ ] #

linux恢复删除文件至此已成功完成

总结:

a .文件删除时,不要慌张,尽可能保存现场

b .某些数据库文件意外删除时有效

— -结束— –

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注