我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Linux如何恢复rm -rf命令所删除的数据文件

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Linux如何恢复rm -rf命令所删除的数据文件

这篇文章主要介绍了Linux如何恢复rm -rf命令所删除的数据文件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

LINUX系统中被删除的文件,只要其句柄没有被关闭,可以在/proc//fd中找到其对应的文件副本。其中指打开该文件的进程id。利用该方法,结合OS命令,DM7提供失效文件的恢复方案,下面用示例来演示:


1.创建一个表空间cs,给其创建两个数据文件

SQL> create tablespace cs datafile ‘/dm_home/dmdba/dmdbms/data/jydm/cs1.dbf’ size 128,’/dm_home/dmdba/dmdbms/data/jydm/cs.dbf’ size 128;
executed successfully
used time: 00:00:21.941. Execute id is 90.


2.找出达梦服务器进程ID

[root@cs1 jydm]# ps -ef | grep dmserver
dmdba 2467 1 0 10月15 ? 00:05:53 /dm_home/dmdba/dmdbms/bin/dmserver /dm_home/dmdba/dmdbms/data/jydm/dm.ini -noconsole
root 18893 18058 0 21:45 pts/1 00:00:00 grep --color=auto dmserver


3.显示达梦服务器进程所打开的文件列表

[root@cs1 jydm]# ls /proc/2467/fd -l
总用量 0
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 0 -> /dev/null
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 1 -> /dm_home/dmdba/dmdbms/log/DmServicejydm.log
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 10 -> /dm_home/dmdba/dmdbms/data/jydm/ROLL.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 11 -> /dm_home/dmdba/dmdbms/data/jydm/MAIN.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 12 -> /dm_home/dmdba/dmdbms/data/jydm/BOOKSHOP.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 13 -> /dm_home/dmdba/dmdbms/data/jydm/DMHR.DBF
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 14 -> pipe:[21853]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 15 -> pipe:[21853]
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 16 -> pipe:[21854]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 17 -> pipe:[21854]
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 18 -> pipe:[21855]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 19 -> pipe:[21855]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 2 -> /dm_home/dmdba/dmdbms/log/DmServicejydm.log
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 20 -> pipe:[21856]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 21 -> pipe:[21856]
lrwx------ 1 dmdba dinstall 64 10月 25 21:12 22 -> socket:[297043807]
lrwx------ 1 dmdba dinstall 64 10月 25 21:12 23 -> /dm_home/dmdba/dmdbms/data/jydm/cs1.dbf
lrwx------ 1 dmdba dinstall 64 10月 25 21:42 24 -> /dm_home/dmdba/dmdbms/data/jydm/cs.dbf
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 3 -> socket:[20041]
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 4 -> socket:[20042]
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 5 -> /dm_home/dmdba/dmdbms/data/jydm/SYSTEM.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 6 -> /dm_home/dmdba/dmdbms/data/jydm/dminst.sys
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 7 -> /dm_home/dmdba/dmdbms/data/jydm/TEMP.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 8 -> /dm_home/dmdba/dmdbms/data/jydm/jydm01.log
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 9 -> /dm_home/dmdba/dmdbms/data/jydm/jydm02.log


4.删除表空间cs中的一个数据文件

[root@cs1 jydm]# rm -rf cs.dbf


5.通过调用系统过程SP_FILE_SYS_CHECK()来手动的对表空间失效文件进行检查。

SQL> call SP_FILE_SYS_CHECK();
DMSQL executed successfully
used time: 0.690(ms). Execute id is 93.


6.在表空间cs中创建一个测试表cs,命令执行出错,显示表空间cs中的cs.dbf文件已经被删除了。

SQL> create table cs(cs_id number) tablespace cs;
create table cs(cs_id number) tablespace cs;
[-3430]:tablespace[CS] file[/dm_home/dmdba/dmdbms/data/jydm/cs.dbf] has been deleted.
used time: 31.462(ms). Execute id is 0.


7.调用系统过程SP_TABLESPACE_PREPARE_RECOVER(tablespace_name)准备进行恢复

SQL> call SP_TABLESPACE_PREPARE_RECOVER(‘CS’);
DMSQL executed successfully
used time: 16.121(ms). Execute id is 95.


8.显示达梦服务器进程所打开的文件列表,可以看到cs.dbf文件被标示为deleted了。

[root@cs1 jydm]# ls /proc/2467/fd -l
总用量 0
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 0 -> /dev/null
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 1 -> /dm_home/dmdba/dmdbms/log/DmServicejydm.log
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 10 -> /dm_home/dmdba/dmdbms/data/jydm/ROLL.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 11 -> /dm_home/dmdba/dmdbms/data/jydm/MAIN.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 12 -> /dm_home/dmdba/dmdbms/data/jydm/BOOKSHOP.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 13 -> /dm_home/dmdba/dmdbms/data/jydm/DMHR.DBF
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 14 -> pipe:[21853]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 15 -> pipe:[21853]
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 16 -> pipe:[21854]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 17 -> pipe:[21854]
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 18 -> pipe:[21855]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 19 -> pipe:[21855]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 2 -> /dm_home/dmdba/dmdbms/log/DmServicejydm.log
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 20 -> pipe:[21856]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 21 -> pipe:[21856]
lrwx------ 1 dmdba dinstall 64 10月 25 21:12 22 -> socket:[297043807]
lrwx------ 1 dmdba dinstall 64 10月 25 21:12 23 -> /dm_home/dmdba/dmdbms/data/jydm/cs1.dbf
lrwx------ 1 dmdba dinstall 64 10月 25 21:42 24 -> /dm_home/dmdba/dmdbms/data/jydm/cs.dbf (deleted)
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 3 -> socket:[20041]
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 4 -> socket:[20042]
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 5 -> /dm_home/dmdba/dmdbms/data/jydm/SYSTEM.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 6 -> /dm_home/dmdba/dmdbms/data/jydm/dminst.sys
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 7 -> /dm_home/dmdba/dmdbms/data/jydm/TEMP.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 8 -> /dm_home/dmdba/dmdbms/data/jydm/jydm01.log
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 9 -> /dm_home/dmdba/dmdbms/data/jydm/jydm02.log


9.使用操作系统的cp命令将文件(cs.dbf)复制到原位置

[root@cs1 jydm]# cp /proc/2467/fd/24 /dm_home/dmdba/dmdbms/data/jydm/cs.dbf
[root@cs1 jydm]# ls -lrt
总用量 1365112
drwxr-xr-x 2 dmdba dinstall 6 7月 23 22:12 bak
-rw-r–r-- 1 dmdba dinstall 479 7月 23 22:12 sqllog.ini
-rw-r–r-- 1 dmdba dinstall 633 7月 23 22:13 dm_service.prikey
drwxr-xr-x 2 dmdba dinstall 6 7月 23 22:14 HMAIN
-rw-r–r-- 1 dmdba dinstall 908 7月 23 22:14 dminit20180723221249.log
-rw-r–r-- 1 dmdba dinstall 890 7月 23 22:14 dmarch_example.ini
-rw-r–r-- 1 dmdba dinstall 1966 7月 23 22:14 dmdcr_cfg_example.ini
-rw-r–r-- 1 dmdba dinstall 631 7月 23 22:14 dmdcr_example.ini
-rw-r–r-- 1 dmdba dinstall 2070 7月 23 22:14 dmmal_example.ini
-rw-r–r-- 1 dmdba dinstall 1537 7月 23 22:14 dminit_example.ini
-rw-r–r-- 1 dmdba dinstall 1277 7月 23 22:14 dmmonitor_example.ini
-rw-r–r-- 1 dmdba dinstall 1679 7月 23 22:14 dmtimer_example.ini
-rw-r–r-- 1 dmdba dinstall 288 7月 23 22:14 dmmpp_example.ini
-rw-r–r-- 1 dmdba dinstall 1241 7月 23 22:14 dmwatch_example.ini
-rw-r–r-- 1 dmdba dinstall 2146 7月 23 22:14 dmwatcher_example.ini
-rw-r–r-- 1 dmdba dinstall 522 7月 23 22:14 dmwmon_example.ini
-rw-r–r-- 1 dmdba dinstall 636 7月 23 22:14 sqllog_example.ini
drwxr-xr-x 2 dmdba dinstall 6 7月 23 22:14 trace
-rw-r–r-- 1 dmdba dinstall 12 7月 23 22:14 rep_conflict.log
-rw-r–r-- 1 dmdba dinstall 157286400 7月 23 22:16 BOOKSHOP.DBF
-rw-r–r-- 1 dmdba dinstall 134217728 7月 23 22:16 DMHR.DBF
-rw-r–r-- 1 dmdba dinstall 40859 8月 20 15:20 dm.ini
-rw-r–r-- 1 dmdba dinstall 10485760 10月 15 12:21 TEMP.DBF
-rw-r–r-- 1 dmdba dinstall 268435456 10月 15 12:21 jydm02.log
-rw-r–r-- 1 dmdba dinstall 134217728 10月 25 21:24 MAIN.DBF
-rw-r–r-- 1 dmdba dinstall 134217728 10月 25 21:43 cs1.dbf
-rw-r–r-- 1 dmdba dinstall 7168 10月 25 21:43 dm.ctl
drwxr-xr-x 2 dmdba dinstall 4096 10月 25 21:43 ctl_bak
-rw-r–r-- 1 dmdba dinstall 134217728 10月 25 21:43 ROLL.DBF
-rw-r–r-- 1 dmdba dinstall 22020096 10月 25 21:59 SYSTEM.DBF
-rw-r–r-- 1 dmdba dinstall 268435456 10月 25 21:59 jydm01.log
-rw-r–r-- 1 root root 134217728 10月 25 21:59 cs.dbf
-rw-r–r-- 1 dmdba dinstall 220 10月 25 21:59 dminst.sys


10.复制成功后,调用系统过程SP_TABLESPACE_RECOVER(ts_name)完成表空间失效文件的恢复。注意,要保证数据文件正确修复,需要保证在SP_TABLESPACE_PREPARE_RECOVER后进行数据文件的复制。

SQL> call SP_TABLESPACE_RECOVER(‘CS’);
DMSQL executed successfully
used time: 46.532(ms). Execute id is 96.


11.再次在表空间cs中创建测试表cs命令成功执行

SQL> create table cs(cs_id number) tablespace cs;
executed successfully
used time: 36.913(ms). Execute id is 97.

感谢你能够认真阅读完这篇文章,希望小编分享的“Linux如何恢复rm -rf命令所删除的数据文件”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Linux如何恢复rm -rf命令所删除的数据文件

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

linux中rm -rf 命令删除文件的恢复方法是什么

这期内容当中小编将会给大家带来有关linux中rm -rf 命令删除文件的恢复方法是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在Linux命令中rm -rf 是一个很可拍的命令只要执行这个命令文件
2023-06-28

使用 Linux 文件恢复工具恢复rm -rf删除的文件

Linux 系统管理员守则中有这么一条:“慎用 rm -rf 命令,除非你知道此命令所带来的后果“,不过 Linux 下删除文件并不是真实的删除磁盘分区中的文件,而是将文件的 inode 节点中的扇区指针清除,同时释放这些数据对应的数据块,
2022-06-03

linux怎么恢复rm误删除的数据库文件

这篇文章主要介绍“linux怎么恢复rm误删除的数据库文件”,在日常操作中,相信很多人在linux怎么恢复rm误删除的数据库文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux怎么恢复rm误删除的数据
2023-06-13

怎么在Linux中恢复rm命令误删的文件

本篇文章为大家展示了怎么在Linux中恢复rm命令误删的文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。假设被删除的文件位于 /media/backup 里,挂载的设备是 /dev/sda3。 首
2023-06-13

linux如何恢复rm误删的数据

在Linux中,当使用rm命令误删数据时,可以尝试使用以下方法恢复:1. 停止写入新的数据:立即停止对文件系统的写入操作,以防止被删除的文件被覆盖。2. 使用文件恢复工具:Linux有一些专门用于文件恢复的工具,如extundelete、T
2023-08-29

如何在Linux中使用rm命令删除文件

如何在Linux中使用rm命令删除文件?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。-f 即:rm -f 文件路径   -f 就是直接强行删除,不作任何提示的意思   删除文件
2023-06-13

Linux如何利用lsof命令恢复删除的文件

这篇文章主要介绍Linux如何利用lsof命令恢复删除的文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!lsof命令lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复
2023-06-16

linux如何恢复删除的文件

要恢复被删除的文件,您可以尝试以下方法:1. 使用恢复工具:有一些专门用于恢复被删除文件的工具,例如TestDisk、PhotoRec等。您可以在Linux上安装并使用这些工具,按照其提供的指导进行操作,以恢复您的文件。2. 使用回收站:如
2023-08-20

Linux下如何利用ext3grep恢复被删除的文件

这篇文章将为大家详细讲解有关Linux下如何利用ext3grep恢复被删除的文件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。10个G的数据被误删除了,差点崩溃,试遍了所有常规恢复软件,无用,就要放弃的时
2023-06-16

Linux平台达梦数据库V7之误删除数据文件的恢复

一 前言LINUX操作系统中,被进程打开的文件仍可以在 OS系统中被删除,因此存在 DM7数据文件可能被误删的风险。如果数据文件被删除,DM7系统能够及时检测出来,并立刻停止对其继续使用并通知用户。二 数据文件失效说明2.1 数据文件失效检查在 dm.ini
Linux平台达梦数据库V7之误删除数据文件的恢复
2016-07-05

如何恢复linux下被删除的syslog—/var/log/messages文件

这篇文章主要介绍了如何恢复linux下被删除的syslog—/var/log/messages文件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Linux新手容易犯的一个错误
2023-06-13

linux如何删除example.txt文件中的所有偶数行

删除Linux中example.txt文件中的所有偶数行有两种方法:方法1:sed命令sed-i"/^$/d"example.txt方法2:awk命令awk"NR%2"example.txt>new.txt注意:先备份文件,使用sed命令删除空行,即偶数行,使用awk命令删除奇数行。
linux如何删除example.txt文件中的所有偶数行
2024-04-02

linux如何若文件被删除,系统会允许你在以后恢复这个被删除的文件

Linux中的文件删除并非永久,即使文件从文件系统中移除,其副本仍可能存在于存储介质上。Linux提供了以下恢复机制:暂存文件系统:记录文件系统更改,即使文件被删除,元数据仍可用于恢复。快照:文件系统的只读副本,可用于恢复在创建快照后删除的文件。回收站:临时存储已删除文件的容器,允许恢复文件。数据恢复工具:可扫描存储介质搜索已删除文件的元数据。恢复步骤:停止写入操作。检查回收站或快照。使用数据恢复工具。将恢复的文件保存到安全位置。
linux如何若文件被删除,系统会允许你在以后恢复这个被删除的文件
2024-04-02

如何利用bat批处理程序通过DOS命令行删除所有的空文件夹

这篇文章主要为大家展示了“如何利用bat批处理程序通过DOS命令行删除所有的空文件夹”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何利用bat批处理程序通过DOS命令行删除所有的空文件夹”这篇
2023-06-08

编程热搜

目录