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

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

时间:2023-03-13 02:43:59 科技观察

前言无论在哪个系统,删除文件都要慎重。因为如果不小心删除了重要文件,会给个人或公司带来重大损失。类似于Windows系统不小心删除了文件,可以使用一些软件来恢复。Linux还有几个软件可以通过误删恢复。注意:虽然有软件可以恢复误删数据,但完全恢复数据的概率不是100%。因此,在使用rm命令删除文件时,一定要小心;必须备份重要数据;并且在恢复被删除的数据之前,被删除文件的目录下不能存放新的东西,否则被覆盖的信息将无法找回。下面是Linux中误删文件的恢复操作。1、lsof的原理:这个命令实际上不能直接用来恢复文件,但是可以列出各个进程打开的文件信息。配合其他命令从/proc目录下的信息中恢复“文件已被删除,但进程仍保持文件打开状态”的文件。/proc目录挂载为内存中映射的区域。我们在读写这些文件的时候,实际上是在从内存中获取相关信息。因此,当我们读取或写入一个文件时(即一个进程正在使用该文件时),即使硬盘中的文件已经被删除,也可以通过内存中的信息恢复该文件。注意:必须以root权限运行,因为lsof需要访问内核内存和各种文件。只能恢复“文件已删除但进程仍打开”文件。如果该目录被误删除,该目录下的其他文件不会被进程打开,不使用的文件也无法通过该方法恢复。lsof输出信息的含义:COMMAND进程的PID(进程标识符)USER进程所有者FD用于标识文件(文件描述符)DEVICE指定磁盘名称SIZE文件大小NODE索引节点(文件在磁盘上的标识)NAME打开文件的确切名称最常用的参数:-c显示当前被某个进程打开的文件-p显示哪些文件被某个pid进程打开-g显示进程status属于某个gid-d显示该目录下进程打开的文件-d显示使用fd4的进程-i:80显示打开80端口的进程恢复文件运行环境:/mnt下有一些文件,其中一个正在查看,然后另一个终端删除它【1】lsof查看被删除文件的进程号lsof/mnt【2】recovery切换到/proc,删除目录下进程pid对应的文件在文件描述中动力;redirectorcp对应内容到其他重点文件:PID和FDcd/proc/31284/fd/cat4>/mnt/ferris_train.less2已被ext3或ext4分区删除优点:与ext3grep相比,只能恢复ext3文件系统中的文件,适用范围更广,恢复速度更快。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月发布)注意:删除数据后,卸载如果被删除数据所在的磁盘或分区是误删的系统根分区,必须输入single-用户模式,将根分区挂载为只读,尽可能避免数据被覆盖。数据被覆盖后无法恢复恢复仍有一定的失败概率。通常,应备份重要数据。小心使用rm安装。-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命令在src目录下生成extundelete可执行文件,这里可以直接执行recovery命令执行makeinstall,程序会安装到/usr/local/bin/恢复文件操作执行extundelete命令的当前目录必须是可写的。1、查看要恢复文件的分区的文件系统df-Th2,卸载要恢复文件的分区umount/mnt3,查看可以恢复的数据,指定误删文件的分区,搜索文件最后一列标记为Deleted,即对于删除的文件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