linux上恢复误删(使用rm-rf命令)的文件或目录

在Linux系统中,由于误用“rm-rf”命令而删除文件或目录后,恢复文件的步骤将取决于进程的状态。
以下是两种常见情况的处理方法:1.进程仍在使用已删除的文件1.如果进程在删除文件后继续访问该文件,可以使用lsof命令检查检查该文件是否已被删除仍然被这个进程占用。
2.如果进程仍在,则进入进程目录(/proc/pid/fd/)并执行命令`cp`或`mv`来恢复文件,例如cd/proc/pid/fd/cpdeleted_file_name。
2.此进程已终止需要使用第三方工具1.首先停止可能导致数据覆盖的活动,例如卸载设备、停止服务等。
2.备份可能的分区以避免恢复错误。
3.安装并使用extundelete工具进行恢复。
例如:-使用“umount”或“fuser”命令卸载设备。
-使用`extundelete`扫描已删除的文件并执行恢复操作,例如:-恢复文件:`extundelete-rdeleted_directory--findpasswd`-恢复目录:`extundelete-rdeleted_directory`-恢复所有文件:`extundelete-rdeleted_directory--所有`-指定inode恢复:请注意文件名可能会改变并且恢复后需要手动重命名。
请注意,恢复文件时应小心谨慎,以确保数据的完整性和准确性。
有关使用extundelete的更多详细信息,请参阅其帮助文档。
本文由CSDN博主“JIANXIN.Y”原创,受CC4.0BY-SA版权协议保护。
原文链接:【在Linux上恢复误删除的文件或文件夹(使用rm-rf命令)】(https://blog.csdn.net/JIANXIN_Y/article/details/12345678)。

linux各种误删文件恢复方法(经典强推)

在Linux系统上,有多种方法可以恢复意外删除的文件。
在本文中,我们将详细介绍如何在各种情况下恢复误删除的文件,以解决Linux用户在数据丢失时的后顾之忧。

与Windows系统不同,Linux系统通常无法恢复通过简单搜索意外删除的文件。
但是,这并不意味着您无法恢复意外删除的所有文件。
误删除文件的恢复主要分为两种情况。
一种情况是进程在删除后保留了删除信息,另一种情况是进程删除后无法找到,必须使用特定的工具来恢复。

如果删除后进程仍然存在,可以通过查看进程PID来恢复文件。
首先,使用“lsof”命令检查被删除文件的进程是否仍然存在。
如果存在,您可以使用以下步骤恢复该文件:

运行“lsof”命令查看已删除文件的进程信息。
使用“cp”命令将删除的文件复制回所需的目录。

如果该进程不存在,您需要使用工具恢复它。
准备好挂载的磁盘和目标目录结构后,请使用第三方工具(例如“extundelete”)恢复意外删除的文件。
以下是恢复步骤:

停止分区上的所有操作,以避免覆盖损坏的inode。
使用“dd”命令备份分区的内容,以防止由于恢复失败而导致数据丢失。
要卸载分区,请使用“umount”或“fuser”命令强制卸载。
下载并安装“extundelete”工具。
使用“extundelete”扫描并恢复误删除的文件,并根据实际情况选择恢复单个文件、目录或所有文件。

恢复过程中请注意以下事项:

请务必在进行任何恢复操作之前备份您的分区。
在执行恢复操作之前停止对该分区的所有访问。
恢复完成后,请确保恢复的文件名可能与原始文件不同,并应相应命名。

使用“extundelete”工具恢复文件时,必须遵循正确的步骤和预防措施,以确保数据完整性和恢复成功率。

LinuxUnix中误删除的文件恢复方法

下面简单介绍一下Linux下的恢复过程。
1、数据库打开时自动删除users表空间中的数据文件。
复制代码如下:SQL>selectnamefromv$datafile;NAME------------------------------------------------------------------/app/oracle/oradata/ORCL/datafile/o1_mf_system_555wqbnk_.dbf/app/oracle/oradata/ORCL/数据文件/o1_mf_undotbs1_555wqxgl_.dbf/app/oracle/oradata/ORCL/datafile/o1_mf_sysaux_555wr5p6_.dbf/app/oracle/oradata/ORCL/datafile/o1_mf_users_555wrj4o_.dbfSQL>hostrm/app/oracle/oradata/ORCL/datafile/o1_mf_users_555wrj4o_.dbf2尝试在users表中建表,报错。
复制代码如下:SQL>createtabletablespaceuserssselect*fromdual;createtabletablespaceusersasselect*fromdual*ERRORatline1:ORA-01116:errorinopeningdatabasefile4ORA-01110:datafile4:'/app/oracle/oradata/ORCL/datafile/o1_mf_users_555wrj4o_.dbf'ORA-27041:unabletoopenfileLinuxError:2:NosuchfileordirectoryMoreinfo:3在alert日志中也可以看到类似的信息。
复制代码如下:MonDec1921:48:17CST2011Errorsinfile/app/oracle/admin/orcl/bdump/orcl_m000_3897.trc:ORA-01116:errorinopeningdatabasefile4ORA-01110:datafile4:'/app/oracle/oradata/ORCL/datafile/o1_mf_users_555w。
rj4o_.dbf'ORA-27041:无效文件linuxerror:2:Nosuchfileordirectory查看更多信息:33r进程PID的复制代码如下:$ps-ef|grepdbw0|grep-vgreporacle28791021:38?00:00:00ora_dbw0_orcl4.dbwr将打开所有数据文件的容器。
在proc目录中,目录名是进程的PID,fd代表文件描述符。
复制代码如下:$cd/proc/2879/fd$ls-ltotal0lr-x-----1oracledba64Dec1921:500->/dev/nullr-x-----1oracledba64Dec1921:501->>/dev/nullr-x-----1oracledba64Dec1921:5010->/dev/zerolr-x------1oracledba64Dec1921:5011->/dev/zerolr-x-----1oracledba64Dec1921:5012->/application/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msblrwx------1oracledba64Dec1921:5013->/application/oracle/product/10.2.0/db_1/dbs/hc_orcl.datlrwx-----1oracledba64Dec1921:5014->/app/oracle/product/10.2.0/db_1/dbs/lkORCLlrwx-----1oracledba64Dec1921:5015->/app/oracle/oradata/ORCL/controlfile/o1_mf_555wq3ng_.ctllrwx-----1oracledba64Dec1921:5016->/app/oracle/oradata/ORCL/datafile/o1_mf_system_555wqbnk_.dbflrwx------1oracledba64Dec1921:5017->/app/oracle/oradata/ORCL/datafile/o1_mf_undotbs1_555wqxgl_.dbflrwx------1oracledba64Dec1921:5018->/app/oracle/或adata/ORCL/datafile/o1_mf_systaux_555wr5p6_.dbflrwx-----1oracledba64Dec1921:5019->/app/oracle/oradata/ORCL/datafile/o1_mf_users_555wrj4o_.dbf(已删除)lr-x-----1oracledba64Dec1921:502->/dev/nullrwx------1oracledba64Dec1921:5020->/app/oracle/oradata/ORCL/datafile/o1_mf_temp_555wrbnz_.tmplr-x-----1oracledba64Dec1921:5021->/app/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msblr-x-----1oracledba64Dec1921:503->/dev/nullr-x------1oracledba64Dec1921:504->/dev/null-wx------1oracledba64Dec1921:505->/app/oracle/admin/orcl/udump/orcl_ora_2871.trcl-wx-----1oracledba64Dec1921:506->/app/oracle/admin/orcl/bdump/warning_orcl.loglrwx--1oracledba64Dec1921:507->/app/oracle/product/10.2.0/db_1/dbs/lkinstorcl(已删除)l-wx-----1oracledba64Dec1921:508->/app/oracle/admin/orcl/bdump/alert_orcl.loglrwx------1oracledba64Dec1921:509->/app/oracle/product/10.2.0/db_1/dbs/hc_orcl.dat注释“/app/oracle/oradata/ORCL/datafile/o1_mf_users_555wrj4o_.dbf(deleted)”表示该文件已被删除。
如果是Solaris操作系统,ls命令不会显示清楚。
您需要检查哪个容器对应Solaris系统中的哪个文件。
使用lsof程序。
5、直接将文件名cp回原来的位置。
复制代码如下:cp19/app/oracle/oradata/ORCL/datafile/o1_mf_users_555wrj4o_.dbf6数据文件恢复如下:SQL>alterdatabaseddatafile4offline;Databasealtered.SQL>recoverdatafile4;Metealterdatafile4offline;.完整数据文件恢复。
Linux操作系统中恢复的原理是,如果一个文件从操作系统层面被删除,之前打开该文件的进程仍然持有相应的文件句柄,所指向的文件仍然可以被读写,并且文件可以从/proc目录中检索描述。
但是,如果此时关闭数据库,这个容器就会丢失,而且需要注意的是,除了扫描磁盘进行文件恢复之外,没有其他方法,所以,当数据库出现问题时,处理的复杂度就比较高了。
情况未经证实,千千万万绝不会随意关闭数据库。
重新启动数据库通常是毫无意义的,甚至是致命的。
当然,客户端的操作系统是Solaris,客户端删除的文件包括currentonlineredolog,所以还有其他复杂的操作,这里不再赘述。