-
2019-08-02 14:39:55
俗言道,常在河边走哪有不湿鞋。在日常运维的过程中难免会误删除一些文件,或目录,甚至于rm -rf /* 的操作。linux系统不像windows删除了还有个回收站可以恢复。
如果是无关紧要的文件自然不必担心,要是公司特别重要的数据呢?难道只能跑路了吗?当然不是了。对误删除还原分为两种情况,使用两种不同的方法:
- 删除后进程中存在删除信息
- 删除后进程中找不到删除信息
接下来分别演示两种不同的还原方式
误删除后进程中存在删除信息的情况
这种情况一般是有活动的进程在持续进行标准输入和输出,即便文件被删除,进程PID依旧存在,这也是为什么删除了一些文件后磁盘空间没有释放的原因。利用这个特性我们可以通过PID来恢复删除的文件。
开始实操演示
[root@docker ~]# ll /usr/local/mysql/data/ total 1114180 -rw-r----- 1 mysql mysql 56 Jun 5 16:09 auto.cnf drwxr-x--- 2 mysql mysql 4096 Jun 10 17:12 clientdb drwxr-x--- 2 mysql mysql 4096 Jun 11 13:56 devops -rw-r----- 1 mysql mysql 1106 Jun 27 13:58 ib_buffer_pool -rw-r----- 1 mysql mysql 79691776 Jun 27 13:59 ibdata1 -rw-r----- 1 mysql mysql 524288000 Jun 27 13:59 ib_logfile0 -rw-r----- 1 mysql mysql 524288000 Jun 13 18:07 ib_logfile1 -rw-r----- 1 mysql mysql 12582912 Jun 27 13:59 ibtmp1 drwxr-x--- 2 mysql mysql 4096 Jun 10 17:06 mmsdb drwxr-x--- 2 mysql mysql 4096 Jun 6 16:21 mysql drwxr-x--- 2 mysql mysql 4096 Jun 5 16:09 performance_schema drwxr-x--- 2 mysql mysql 20480 Jun 24 11:30 smsdb drwxr-x--- 2 mysql mysql 12288 Jun 5 16:09 sys
这里我们以mysql的日志ib_logfile0为例,该文件一直为mysql进程所使用
直接 rm -f 删除文件
# 删除前记录一下MD5值 [root@docker ~]# md5sum /usr/local/mysql/data/ib_logfile0 ec2926fbfdab5ed010e3c3e5bca24687 /usr/local/mysql/data/ib_logfile0 [root@docker ~]# rm -f /usr/local/mysql/data/ib_logfile0 [root@docker ~]# ll /usr/local/mysql/data/ total 602176 -rw-r----- 1 mysql mysql 56 Jun 5 16:09 auto.cnf drwxr-x--- 2 mysql mysql 4096 Jun 10 17:12 clientdb drwxr-x--- 2 mysql mysql 4096 Jun 11 13:56 devops -rw-r----- 1 mysql mysql 1106 Jun 27 13:58 ib_buffer_pool -rw-r----- 1 mysql mysql 79691776 Jun 27 13:59 ibdata1 -rw-r----- 1 mysql mysql 524288000 Jun 13 18:07 ib_logfile1 -rw-r----- 1 mysql mysql 12582912 Jun 27 13:59 ibtmp1 drwxr-x--- 2 mysql mysql 4096 Jun 10 17:06 mmsdb drwxr-x--- 2 mysql mysql 4096 Jun 6 16:21 mysql drwxr-x--- 2 mysql mysql 4096 Jun 5 16:09 performance_schema drwxr-x--- 2 mysql mysql 20480 Jun 24 11:30 smsdb drwxr-x--- 2 mysql mysql 12288 Jun 5 16:09 sys # 可以看到文件已经没有了
赶紧lsof看一下
没有lsof命令的话 直接 yum -y install lsof
[root@docker ~]# lsof | grep ib_logfile0 mysqld 1105 mysql 3uW REG 8,2 524288000 1050951 /usr/local/mysql/data/ib_logfile0 (deleted) mysqld 1105 1215 mysql 3uW REG 8,2 524288000 1050951 /usr/local/mysql/data/ib_logfile0 (deleted) mysqld 1105 1231 mysql 3uW REG 8,2 524288000 1050951 /usr/local/mysql/data/ib_logfile0 (deleted) mysqld 1105 1232 mysql 3uW REG 8,2 524288000 1050951 /usr/local/mysql/data/ib_logfile0 (deleted) mysqld 1105 1233 mysql 3uW REG 8,2 524288000 1050951 /usr/local/mysql/data/ib_logfile0 (deleted) mysqld 1105 1234 mysql 3uW REG 8,2 524288000 1050951 /usr/local/mysql/data/ib_logfile0 (deleted) mysqld 1105 1235 mysql 3uW REG 8,2 524288000 1050951 /usr/local/mysql/data/ib_logfile0 (deleted) mysqld 1105 1236 mysql 3uW REG 8,2 524288000 1050951 /usr/local/mysql/data/ib_logfile0 (deleted)
根据pid 1105 进入到 /proc下面对应的目录中
[root@docker ~]# cd /proc/1105/fd
看一下目录中有哪些文件
图中可以看到所有被1105这个进程所占用的进程,其中就包括刚才删除的 ib_logfile0,对应3号文件
进行恢复操作
[root@docker fd]# cp 3 /usr/local/mysql/data/ib_logfile0 # 直接复制3 号文件到原来的路径中去 [root@docker fd]# ll /usr/local/mysql/data/ total 1114180 -rw-r----- 1 mysql mysql 56 Jun 5 16:09 auto.cnf drwxr-x--- 2 mysql mysql 4096 Jun 10 17:12 clientdb drwxr-x--- 2 mysql mysql 4096 Jun 11 13:56 devops -rw-r----- 1 mysql mysql 1106 Jun 27 13:58 ib_buffer_pool -rw-r----- 1 mysql mysql 79691776 Jun 27 13:59 ibdata1 -rw-r----- 1 root root 524288000 Jun 27 15:08 ib_logfile0 -rw-r----- 1 mysql mysql 524288000 Jun 13 18:07 ib_logfile1 -rw-r----- 1 mysql mysql 12582912 Jun 27 13:59 ibtmp1 drwxr-x--- 2 mysql mysql 4096 Jun 10 17:06 mmsdb drwxr-x--- 2 mysql mysql 4096 Jun 6 16:21 mysql drwxr-x--- 2 mysql mysql 4096 Jun 5 16:09 performance_schema drwxr-x--- 2 mysql mysql 20480 Jun 24 11:30 smsdb drwxr-x--- 2 mysql mysql 12288 Jun 5 16:09 sys # 恢复完成了 只是权限需要手动修改一下 [root@docker fd]# chown mysql:mysql /usr/local/mysql/data/ib_logfile0 [root@docker fd]# ll /usr/local/mysql/data/ total 1114180 -rw-r----- 1 mysql mysql 56 Jun 5 16:09 auto.cnf drwxr-x--- 2 mysql mysql 4096 Jun 10 17:12 clientdb drwxr-x--- 2 mysql mysql 4096 Jun 11 13:56 devops -rw-r----- 1 mysql mysql 1106 Jun 27 13:58 ib_buffer_pool -rw-r----- 1 mysql mysql 79691776 Jun 27 13:59 ibdata1 -rw-r----- 1 mysql mysql 524288000 Jun 27 15:08 ib_logfile0 -rw-r----- 1 mysql mysql 524288000 Jun 13 18:07 ib_logfile1 -rw-r----- 1 mysql mysql 12582912 Jun 27 13:59 ibtmp1 drwxr-x--- 2 mysql mysql 4096 Jun 10 17:06 mmsdb drwxr-x--- 2 mysql mysql 4096 Jun 6 16:21 mysql drwxr-x--- 2 mysql mysql 4096 Jun 5 16:09 performance_schema drwxr-x--- 2 mysql mysql 20480 Jun 24 11:30 smsdb drwxr-x--- 2 mysql mysql 12288 Jun 5 16:09 sys # 再看一下MD5 值 [root@docker fd]# md5sum /usr/local/mysql/data/ib_logfile0 ec2926fbfdab5ed010e3c3e5bca24687 /usr/local/mysql/data/ib_logfile0
与原文件MD5值保持一致恢复完成
更多相关内容 -
Linux 误删除文件恢复
2021-05-18 18:16:545、打开刚刚被删除文件所在分区,用ls 加-d参数显示刚刚删除文件所在的目录 6、显示有<>尖括号的就是我们要找的文件Inode 号 执行 logdump -i <1056904> 7、记住上图中红色标记部分,执行quit退出,... -
Linux XFS文件系统误删除文件恢复.pdf
2021-09-05 19:39:48Linux XFS文件系统误删除文件恢复.pdf -
linux误删除文件恢复
2021-02-01 21:57:24作为一个多用户、多任务的操作系统,Linux下的文件一旦被删除,是难以恢复的。尽管删除命令只是在文件节点中作删除标记,并不真正清除文件内容,但是其他用户和一些有写盘动作的进程会很快覆盖这些数据。不过,对于...作为一个多用户、多任务的操作系统,Linux下的文件一旦被删除,是难以恢复的。尽管删除命令只是在文件节点中作删除标记,并不真正清除文件内容,但是其他用户和一些有写盘动作的进程会很快覆盖这些数据。不过,对于家庭单机使用的Linux,或者误删文件后及时补救,还是可以恢复的
一、用运SecureCRT远程对操作系统上,查看一下当前系统版本号,及文件系统格式
二、为方便本次实验,我们新创建一文件。
三、执行删除操作
rm -rf web_1.txt
四、运用,系统自还工具debugfs来修复
五、打开,刚刚被删除文件所在的分区
查看目录在分区
六、用ls 加-d参数显示刚刚删除文件所在的目录
七、显示有<>尖括号的就是我们要找的文件Inode 号 执行logdump –I <19662057>
八,执行完命令后,显示了一屏信息,我们需要的是下面这一行,并且要记住,后面的值
九、退出dedugfs
qiut
十,执行如下命令
bs与下图offset值一致,skip与block值一致
十一,以上结果表示恢复成功我们看下/opt/wb_1目录下到底有没有
恢复成功!
以上就是良许教程网为各位朋友分享的Linux相关知识。
-
linux误删除文件后的恢复操作
2021-05-17 11:18:16下面介绍具体方法:先说下我准备删除的文件为/root/silencewolf/silencewolf.sh 里面内容如下: 执行rm -f silencewolf....打开误删除的分区磁盘open /dev/sda3 具体如图: 2、输入ls -d /root/silencewolf 删除文件...下面介绍具体方法:
先说下我准备删除的文件为/root/silencewolf/silencewolf.sh 里面内容如下:
执行rm -f silencewolf.sh,用ls查看文件夹为空了
下面开始恢复文件,具体操作如下:
1、输入debugfs,打开debugfs功能,打开误删除的分区磁盘
open /dev/sda3 具体如图:
2、输入ls -d /root/silencewolf 删除文件的文件夹路径如图:
找到删除的文件的索引值<18022483>
3、输入logdump -i <18022483> 命令如下图:
上面输出信息有好几页,做好塞选,找到如下字段:
Blocks:(0+1):18024668这段记录18024668这个值,quit退出debugfs。
4、下面用dd命令来恢复,输入如下:
dd if=/dev/sda3 of=/tmp/silencewolf.sh.bak bs=4096 count=1 skip=18024668
5、查看/tmp目录下文件多了个silencewolf.sh.bak,cat、他发现为原来删除的文件silencewolf.sh如下图:
到这里文件恢复已经完成,把他从/tmp下cp到/root/silencewolf/silencewolf.sh彻底完成恢复了。
总结:主要利用debugfs的调试功能找到文件的索引,其实rm删除的文件并不是真的删除了,而是inode被删除了,所以比较小的文件可以用这种方法恢复,对于大文件,这个恢复有点问题,利用extundelete工具能够很好的解决大文件误删除的问题,以后有机会在做介绍。
本文出自 “SilenceWolf” 博客,请务必保留此出处http://silencewolf.blog.51cto.com/5009737/1425073
-
恢复Linux下误删除的文件
2019-04-29 10:11:58做Linux运维不会恢复Linux下误删除的文件,这是很不应该的 -
如何恢复误删除的Linux文件
2020-03-04 12:13:06作为一个多用户、多任务的操作系统,Linux下的文件一旦被删除,是难以恢复的。本文首先介绍Ext2文件系统结构,给出了恢复被误删文件的方法。 -
linux下误操作删除文件如何恢复
2018-08-10 17:37:24假设文件是在” /home/linux/shl/sy_linux/路径下 参考:百度知道... 我要恢复的文件是:root@ubuntu:/home/linux/shl/sy_linux/pthread_test.c linux@ubuntu:~/shl/sy_linux$ df -T Filesyst... -
Linux利用lsof/extundelete工具恢复误删除的文件或目录
2020-09-14 18:45:50主要给大家介绍了关于Linux利用lsof/extundelete工具恢复误删除的文件或目录的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 -
在Linux上恢复误删除的文件或目录
2020-06-15 14:21:47误删除Linux系统文件了?不用急,本文将给你一个恢复Linux文件的方法,让你轻松应对运维中的各风险问题。方法总比问题多~ 说在前面的话 针对日常维护操作,难免会出现文件误删除的操作。大家熟知Linux文件系统不同... -
linux中误删除程序包恢复实例
2020-09-15 14:42:57Linux 下的文件一旦被删除,是难以恢复的。对于家庭单机使用的Linux ,或者误删文件后及时补救,还是可以恢复的。下面就来介绍一下。 -
Linux文件误删除恢复方法
2021-05-08 23:33:51linux系统中操作重要文件,备份是最重要的但是有时候误删除文件,要怎么恢复呢?下面经验可以试试当前系统只有一个用户在登录,对文件进行了误删除操作,那么,这个时候该如何进行操作?注意事项及解决思路:停止对... -
使用Linux文件恢复工具
2021-03-02 00:25:44不过Linux下删除文件并不是真实的删除磁盘分区中的文件,而是将文件的inode节点中的扇区指针清除,同时释放这些数据对应的数据块,当释放的数据块被系统重新分配时,那些被删除的数据就会被覆盖,所以误...... -
linux各种误删文件恢复方法(经典强推)
2021-05-07 14:05:37linux不像windows有个回收站,使用rm -rf *基本上文件是找不回来的。 那么问题来了: ...误删除文件进程还在的情况: 这种一般是有活动的进程存在持续标准输入或输出,到时文件被删除后,进程PID依旧 -
浅谈Linux系统误删除文件恢复方法
2021-05-18 08:49:39各位有没有在Linux下误删除过文件,是否删除后使您非常懊恼,为什么Linux系统没有像windows一样的回收站可以恢复误删除的文件?各位看官,Linux下误删除文件不必惊慌,下面几步叫你如何在Linux系统下恢复误删除的... -
Linux操作系统下如何能恢复误删除文件
2021-05-10 02:02:27作为一个多用户、多任务的操作系统,Linux下的文件一旦被删除,是难以恢复的。尽管删除命令只是在文件节点中作删除标记,并不真正清除文件内容,但是其他用户和一些有写盘动作的进程会很快覆盖这些数据。不过,对于... -
Linux xfs文进系统备份恢复
2019-04-29 09:58:01Linux xfs文进系统备份恢复,非常不错,建议大家下载学习 -
如何在Linux上恢复误删除的文件或目录
2021-09-04 14:55:54一、误删除文件进程还在的情况 这种一般是有活动的进程存在持续标准输入或输出,到时文件被删除后,进程PID还是存在。这也就是有些服务器删除一些文件但是磁盘不释放的原因 比如当前举例说明: 通过一个shell... -
深入理解linux文件系统与日志文件及恢复误删除文件
2022-01-04 18:42:45一、深入理解Linux文件系统 inode 和block 概述 1.1.2、inode 的内容 用户打开文件时,系统内部的过程 inode 的大小 inode 的特殊作用 inode删除命令 二、硬链接与软链接 硬链接 软链接 三、恢复ext类型... -
Linux ext4文件系统下 extundelete 恢复 误删除的文件
2021-05-08 22:25:341、文件基本操作1.1 查看文件# ls1.2 创建1.2.1 创建文件# touch {file_name}# vim {file_name}1.2.2 创建目录# mkdir -p {dir}1.3 复制1.3.1 复制文件# cp {src_file} {dest_...dir}1.4 删除1.4.1 删除文件# rm ... -
Linux下误删文件恢复办法
2021-05-14 00:16:15恢复删除的文件当误删除文件时,如果还有程序对此文件进行操作,那么可以通过lsof 命令恢复文件内容。举例:误删粗messages日志文件[root@cdn ~]# cat /var/log/messages |wc -l20568[root@cdn ~]# rm -f /var/log/... -
Linux恢复误操作删除文件
2021-05-10 17:28:32当然,这里所指的是彻底删除,即已经不能通过“回收站”找回的情况,比如使用"rm-rf来删除数据针对Linux下的EXT文件系统,可用的恢复工具有debugfs、ext3grep、extundelete等。本贴中仅以extundelete为例,这是一个开源的... -
Linux恢复误删除的文件或者目录
2021-05-08 23:42:25那么问题来了:对于linux下误删的文件,我们是否真的无法通过软件进行恢复呢?答案当然是否定的,对于误删的文件,我们还是能通过软件恢复过来的。对于误删文件还原可以分为两种情况:一种是删除以后在进程存在删除... -
linux testdisk工具恢复误删除的文件
2022-03-12 18:40:09testdisk 具有广泛的功能,包括恢复丢失或损坏的分区和使不能启动磁盘可以重新启动,但它也经常被用来恢复被误删的文件。 二、安装testdisk 可以使用 apt install testdisk 或 yum install testdisk 等命令安装 ... -
如何恢复Linux中的误删文件
2019-05-29 11:54:22写在前面的话在开始教程之前我有必要提醒大家,使用窗口管理器(GUI)删除文件和使用命令行工具(CLI)删除文件这两种方法之间是有区别的。当我们使用窗口管理器来删除文件时,我们仅仅只是将文件从某个目录移动到了... -
Linux文件误删除,如何快速恢复
2020-11-27 16:32:09恢复方法 先看看文件是不是还有进程占用(文件恢复也基于此种情形) [root@root-10-xx-xx-174 boci_logs]# lsof | grep /dev/shm java 132387 root mem REG 0,16 48602 474577519 /dev/shm/xxx/lib/tomcat-juli-... -
Linux文件误删除恢复操作
2017-06-21 13:51:29作为一个多用户、多任务的操作系统,Linux下的文件一旦被删除,是难以恢复的。尽管删除命令只是在文件节点中作删除标记,并不真正清除文件内容,但是其他用户和一些有写盘动作的进程会很快覆盖这些数据。不过