Linux rm 命令误删文件的恢复方法
- 文档
- 2024-10-05
- 113热度
- 0评论
下面小编给大家带来Linux rm 命令误删文件的恢复方法,本文共5篇,希望能帮助到大家!
网上好多文章都是介绍 ext3 或者2的,在 ext4 下大家可以试下extundelete 这个软件,本人在 Ubuntu 11.04 下亲测,数据完美恢复,
假设被删除的文件位于 /media/backup 里,挂载的设备是 /dev/sda3。
首先重新挂载当前磁盘。
然后安装 extundelete 依赖的包,
sudo aptitude install e2fsprogs e2fslibs-dev
下载 extundelete ,解压 extundelete,运行 三大步
./configure
make
sudo make install
可以 extundelete --help 看下用法,或者直接全部恢复 extundelete /dev/sda3 --restore-all注意,恢复后的文件默认位于安装这个软件文件夹的 RECOVERED_FILES 里,
使用word编辑文档时,一时之乱不小心把编辑中的word文档没保存就关掉了,这可怎么办?
1.先打开一个新建的 Word 文档。
2.然后点击文件,选项,保存,找到自动恢复位置。
3.接下来把你的 ads 文件放到这个文件夹。
4.在“文件”菜单上,单击“打开”命令,
5.在“查找范围”列表中,单击包含要打开的文件的驱动器、文件夹或 Internet 位置。
6.在文件夹列表中,定位并打开包含文件的文件夹。
7.选择要恢复的文件。
8.单击“打开”按钮旁边的箭头,然后单击“打开并修复”
打开受损 Word 文档后,如果文档的内容显示混乱,那么你可以将最后一个段落标记之外的所有内容复制到一个新文档中,或许能够解决乱码问题。
本文章来介绍两种关于Linux rm 命令误删文件的恢复方法,一种是利用extundelete而另一种是用grep了了,
利用extundelete插件
假设被删除的文件位于 /media/backup 里,挂载的设备是 /dev/sda3。
首先重新挂载当前磁盘。
然后安装 extundelete 依赖的包,
sudo aptitude install e2fsprogs e2fslibs-dev
下载 extundelete ,
解压 extundelete,
运行
三大步
./configure
make
sudo make install
可以 extundelete --help 看下用法,或者直接全部恢复 extundelete /dev/sda3 --restore-all注意,恢复后的文件默认位于安装这个软件文件夹的 RECOVERED_FILES 里。
实例
grep恢复删除文件
先临时建一个文本文件 vpsee.log 做测试,然后删除这个文件:
$ echo “important log file for vpsee.com” >vpsee.log
$ cat vpsee.log
important log file for vpsee.com
$ rm vpsee.log
如果能记住刚才删除文件中的某个关键字的话可以用 grep 搜索整个 /dev/sda1,-a 标志位的意思是把 /dev/sda1 这个分区看成是文本形式的(分区本身是二进制形式的),-B 10 -A 100 的意思是如果找到关键字就打印出其前10行和后100行的内容:
# grep -a -B 10 -A 100 'vpsee.com' /dev/sda1 >tmp.txt
在一堆 @ 之间可以找到我们刚才删除的内容:
$ vi tmp.txt
...
@$^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@?^@^@^@^A^@^@^@^@^@^@^@^@^@^@^@è^K^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@^Q^@^@^@^C^@^@^@^@^@^@^@^@^@^@^@è^K^@^@×^@
^@^@important log file for vpsee.com
@
@
...
当然,如果误删了二进制、doc、png/jpg/gif 之类的文件,可以用一些第三方 ext2/ext3 文件恢复工具帮助恢复文件,比如 TestDisk, PhotoRec 等,
环境:数据库在Open的状态,然后rm -rf users.dbf (删除users表空间),最后找回users.dbf文件,
在回复的时候,回复的方法跟数据库的版本关系不大(因为是物理文件),只是跟操作系统有一定的关系,如:Red hat Linux , Solaris Linux 等等。
下面进行演示:
删除users表空间.
1、我们首先进入Sqlplus,然后执行SQL语句:
select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/prod/disk4/system01.dbf
/u01/app/oracle/oradata/prod/disk2/undotbs01.dbf
/u01/app/oracle/oradata/prod/disk5/sysaux01.dbf
/u01/app/oracle/oradata/prod/disk5/bigtbs01.dbf
/u01/app/oracle/oradata/prod/disk5/indx01.dbf
/u01/app/oracle/oradata/prod/disk2/users01.dbf
/u01/app/oracle/oradata/prod/disk3/oltp01.dbf
7 rows selected.
SQL>!rm /u01/app/oracle/oradata/prod/disk2/users01.dbf今天尝试了一下,在Linux下删除一个数据文件,然后进行回复。
2、此时,users表空间已经被删除了,我们已经无法在users表空间上建立表了。
尝试在users表空间上建立名字为abcd123的表,已经没法建立了。
SQL>create table abcd123 tablespace users as select * from v$instance;
create table abcd123 tablespace users as select * from v$instance
*
ERROR at line 1:
ORA-01116: error in opening database file 6
ORA-01110: data file 6: '/u01/app/oracle/oradata/prod/disk2/users01.dbf'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
3、确认dbwr进程PID
通过命令,我们可以看到当前数据库实例的dbwr的PID。因为我同一台主机上有两个实例,故有2个。
一个为prod,另一个为oms。
$ ps -ef|grep dbw0|grep -v grep
oracle 11872 1 0 21:46 ? 00:00:00 ora_dbw0_prod
oracle 11951 1 0 21:47 ? 00:00:01 ora_dbw0_oms
4、因为dbwr会打开所有数据文件的句柄。所以可以进入proc目录进行查找,格式为:
cd /prod/PID/fd
此处,fd为文件描述符。
[oracle@prod fd]$ cd /proc/11872/fd
[oracle@prod fd]$ ls -l
total 30
lr-x------ 1 oracle dba 64 May 14 22:47 0 ->/dev/null
lr-x------ 1 oracle dba 64 May 14 22:47 1 ->/dev/null
lrwx------ 1 oracle dba 64 May 14 22:47 10 ->/u01/app/oracle/product/10.2.0/db_1/rdbms/audit/ora_11859.aud
lr-x------ 1 oracle dba 64 May 14 22:47 11 ->/dev/zero
lr-x------ 1 oracle dba 64 May 14 22:47 12 ->/dev/zero
lr-x------ 1 oracle dba 64 May 14 22:47 13 ->/u01/app/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msb
lrwx------ 1 oracle dba 64 May 14 22:47 14 ->/u01/app/oracle/product/10.2.0/db_1/dbs/hc_prod.dat
lrwx------ 1 oracle dba 64 May 14 22:47 15 ->/u01/app/oracle/product/10.2.0/db_1/dbs/lkPROD
lrwx------ 1 oracle dba 64 May 14 22:47 16 ->/u01/app/oracle/oradata/prod/disk1/control01.ctl
lrwx------ 1 oracle dba 64 May 14 22:47 17 ->/u01/app/oracle/oradata/prod/disk2/control02.ctl
lrwx------ 1 oracle dba 64 May 14 22:47 18 ->/u01/app/oracle/oradata/prod/disk3/control03.ctl
lrwx------ 1 oracle dba 64 May 14 22:47 19 ->/u01/app/oracle/oradata/prod/disk4/system01.dbf
lr-x------ 1 oracle dba 64 May 14 22:47 2 ->/dev/null
lrwx------ 1 oracle dba 64 May 14 22:47 20 ->/u01/app/oracle/oradata/prod/disk2/undotbs01.dbf
lrwx------ 1 oracle dba 64 May 14 22:47 21 ->/u01/app/oracle/oradata/prod/disk5/sysaux01.dbf
lrwx------ 1 oracle dba 64 May 14 22:47 22 ->/u01/app/oracle/oradata/prod/disk5/bigtbs01.dbf
lrwx------ 1 oracle dba 64 May 14 22:47 23 ->/u01/app/oracle/oradata/prod/disk5/indx01.dbf
lrwx------ 1 oracle dba 64 May 14 22:47 24 ->/u01/app/oracle/oradata/prod/disk2/users01.dbf (deleted)
lrwx------ 1 oracle dba 64 May 14 22:47 25 ->/u01/app/oracle/oradata/prod/disk3/oltp01.dbf
lrwx------ 1 oracle dba 64 May 14 22:47 26 ->/u01/app/oracle/oradata/prod/disk1/temp01.dbf
lrwx------ 1 oracle dba 64 May 14 22:47 27 ->/u01/app/oracle/oradata/prod/disk3/lmtemp201.dbf
lrwx------ 1 oracle dba 64 May 14 22:47 28 ->/u01/app/oracle/oradata/prod/disk4/lmtemp201.dbf
lr-x------ 1 oracle dba 64 May 14 22:47 29 ->/u01/app/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msb
lr-x------ 1 oracle dba 64 May 14 22:47 3 ->/dev/null
lr-x------ 1 oracle dba 64 May 14 22:47 4 ->/dev/null
l-wx------ 1 oracle dba 64 May 14 22:47 5 ->/u01/app/oracle/admin/udump/prod_ora_11859.trc
l-wx------ 1 oracle dba 64 May 14 22:47 6 ->/u01/app/oracle/admin/bdump/alert_prod.log
lrwx------ 1 oracle dba 64 May 14 22:47 7 ->/u01/app/oracle/product/10.2.0/db_1/dbs/hc_prod.dat
l-wx------ 1 oracle dba 64 May 14 22:47 8 ->/u01/app/oracle/admin/bdump/alert_prod.log
lrwx------ 1 oracle dba 64 May 14 22:47 9 ->/u01/app/oracle/product/10.2.0/db_1/dbs/lkinstprod (deleted)
[oracle@prod fd]$
我们可以清楚的看到 /u01/app/oracle/oradata/prod/disk2/users01.dbf (deleted) 的字样,表示此文件已经被删掉了,
5、进行恢复
通过cp命令,把语句柄拷贝回原来的位置。
cp 24 /u01/app/oracle/oradata/prod/disk2/users01.dbf
此处的24为其给出的编号。
6、进入recovery
执行以下SQL命令:
SQL> alter database datafile 6 offline;
Database altered.
SQL>recover datafile 6;
Media recovery complete.
SQL>alter database datafile 6 online;
Database altered.
SQL>
至此,回复完成!
7、测试
我们重新尝试在users 表空间上建立一个table
SQL>create table abcd123 tablespace users as select * from v$instance;
Table created.
SQL>select * from abcd123;
INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
HOST_NAME
----------------------------------------------------------------
VERSION STARTUP_T STATUS PAR THREAD# ARCHIVE LOG_SWITCH_WAIT
----------------- --------- ------------ --- ---------- ------- ---------------
LOGINS SHU DATABASE_STATUS INSTANCE_ROLE ACTIVE_ST BLO
---------- --- ----------------- ------------------ --------- ---
1 prod
prod
10.2.0.1.0 16-APR-12 OPEN NO 1 STARTED
ALLOWED NO ACTIVE PRIMARY_INSTANCE NORMAL NO
SQL>
我们可以发现,建立成功了,说明回复成功,
如何恢复删除的文件,由于误操作,把文件给错误删除了,很多朋友可能碰到过这种情况,一不小心或错误操作,以及一些其他什么原因,删除了有用的或还要用的文件,而且又清空了回收站(或马上删除而根本不放入回收站),现在忽然想起来要用。怎么办?别着急,只要你的电脑还没有运行磁盘整理,且系统完好,任何时候的文件都可以找回来。方法很好操作,主要步骤是:
1、点击“开始/运行”,输入regedit 打开注册表
2、依次展开:HKEY_LOCAL_MACHIME/SOFTWARE/microsoft/WINDOWS/CURRENTVERSION /EXPLORER/DESKTOP/NemeSpace 在左边空白处点一下“新建”,选择“主键”,命名为“645FFO40―5081―101B―9F08―00AA002F954E”,再把右边的“默认”主键的键值设为“回收站”,退出注册表,
3、重启电脑就可以见到被你删除的文件。
大家可以试下,看看能不能找回来,如果不行,那只能用文件恢复软件了,这样的软件有很多,网上下载的功能不是很强大,但是可以找回来个8 9 成。如果想完全找回来,只能找专业的电脑公司,她们可以帮你完全找回来。
★
★
★
★
★
★
★
★
★
★