当前位置: 首页 > 科技观察

超饱!Linux误删文件恢复命令及方法

时间:2023-03-19 18:17:43 科技观察

前言无论在哪个系统,删除文件都要慎重。因为如果不小心删除了重要文件,会给个人或公司带来重大损失。类似于Windows系统不小心删除了文件,可以使用一些软件来恢复。Linux还有几个软件可以通过误删恢复。注意:虽然有软件可以恢复误删数据,但完全恢复数据的概率不是100%。因此,在使用rm命令删除文件时,一定要小心;必须备份重要数据;并且在恢复被删除的数据之前,被删除文件的目录下不能存放新的东西,否则被覆盖的信息将无法找回。下面是Linux中误删文件的恢复操作。1、lsof的原理:这个命令实际上不能直接用来恢复文件,但是可以列出各个进程打开的文件信息。配合其他命令从/proc目录下的信息中恢复“文件已被删除,但进程仍保持文件打开状态”的文件。/proc目录挂载为内存中映射的区域。我们在读写这些文件的时候,实际上是在从内存中获取相关信息。因此,当我们读取或写入一个文件时(即一个进程正在使用该文件时),即使硬盘中的文件已经被删除,也可以通过内存中的信息恢复该文件。注意:必须以root权限运行,因为lsof需要访问内核内存和各种文件。只能恢复“文件已删除但进程仍打开”文件。如果该目录被误删除,该目录下的其他文件不会被进程打开,不使用的文件也无法通过该方法恢复。lsof输出信息的含义:COMMAND#processPID(进程标识符)USER#processownerFD#用来标识文件(文件描述符)DEVICE#指定磁盘名称SIZE#文件大小NODE#index节点(文件磁盘上的标识)NAME#打开文件的确切名称最常用的参数:-c#显示当前某个进程打开的文件-p#显示某个pid进程打开了哪些文件-g#显示当前打开的文件属于某个gid的进程状态-d#显示目录下进程打开的文件-d#显示进程使用fd为4-i:80#显示进程打开80端口恢复文件运行环境:有/mnt下的一些文件,正在查看其中一个文件train.less,然后另一个终端将其删除[1]lsof查看正在使用删除文件的进程号lsof/mnt[2]恢复并切换到/proc,并删除进程pid下文件描述符下目录下的文件对应文件;相应的内容被重定向或cp到其他文件。重点:PID和FDcd/proc/31284/fd/cat4>/mnt/ferris_train.less2,extundelete原理:利用分区日志中保存的信息,尝试恢复ext3或ext4分区被删除的文件优点:类似与只能恢复ext3文件系统中文件的ext3grep相比,适用范围更广,恢复速度更快。extundelete官方地址(官方文档):http://extundelete.sourceforge.netextundelete下载地址:http://downloads.sourceforge。net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2(extundelete最新版本为0.2.4,2013年1月发布)注意:删除数据后,删除的数据必须是uninstalled如果不小心删除了系统根分区所在的磁盘或分区,进入单用户模式,将根分区挂载为只读,尽量避免数据被覆盖。有一定的失败概率,平时要备份重要数据。慎用rm安装1.依赖安装#centos安装操作yuminstalle2fsprogs-devele2fsprogs*gcc*#ubuntu安装操作apt-getinstallbuild-essentiale2fslibs-deve2fslibs-dev2编译安装wgethttp://downloads.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2tarxfextundelete-0.2.4.tar.bz2cdextundelete-0.2.4./configuremakemakeinstallcd/root/extundelete-0.2.4/srcextundelete-v执行make命令会生成extundelete可执行文件在src目录下,直接执行recovery命令即可。执行makeinstall会把程序安装到/usr/local/bin/下恢复文件操作执行extundelete命令的当前目录必须是可写的。1、查看要恢复文件的分区的文件系统df-Th2,卸载要恢复文件的分区上的umount/mnt3,查看可以恢复的数据,搜索误删文件的分区。最后一列被标记为Deletedfiles,即被删除的文件。extundelete/dev/vdb1--inode2(根分区的inode值为2)4.恢复单个目录指定要恢复的目录名。如果是空目录,则不会恢复。extundelete/dev/vdb1--restore-directoryferris当执行恢复文件的命令时,会在执行命令的当前目录下生成RECOVERED_FILES目录,恢复的文件会放在该目录下。如果没有生成目录,则失败。5.恢复单个文件指定要恢复的文件名。如果文件大小为几千字节,则恢复失败的可能性很大。extundelete/dev/vdb1--restore-fileopenssh-7.7p1.tar.gz6。恢复所有删除的文件,不指定文件名或目录名,恢复所有删除的数据。extundelete/dev/vdb1--restore-all