删库是不可能删库的,这辈子都不可能删库的,删根行吗? 写在前面: 今天我们不删数据库,我们来聊聊误删除文件如何能不能恢复? 你选哪个,答案是能,这事我们得先从原理讲起 Linux文件系统由三部分组成:文件名,inode,block zmedu.txt –>inode –> block 文件存储在硬盘上,硬盘的最小存储单位叫做“扇区”(Sector)。每个扇区储存512字节(相当于0.5KB)。 操作系统读取硬盘的时候,不会一个个扇区的读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个“块”(block)。这种由多个扇区组成的“块”,是文件存取的最小单位。“块”的大小,最常见的是4KB,即连续八个sector组成一个block。 文件数据都储存在“块”中,那么很显然,我们还必须找到一个地方储存文件的“元信息”,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为”索引节点”。 我们访问的任何数据,都是先找到inode,然后根据inode去找到相应硬盘的位置。如果没有inode号,就无从找到硬盘上的数据。 这个inode号在哪里呢? 从上个例子看一看到b.txt的inode号是262170 -在inode里面包含的元信息,具体内容如下: 我们还可以通过stat来查看inode的信息 敲黑板: 在Linux操作系统中,文件名只是inode号码便于识别的绰号,操作系统通过inode号来识别文件,而非文件名。 作为用户我们打开一个文件,在系统内部的流程是这样的: 同样的Linux系统是通过link的数量来控制文件删除的,删除指的是文件名到inode的链接被删除了,但是文件在磁盘上的block数据块并未被删除。 所以我们想要恢复,只需要恢复对应的inode节点号就可以恢复数据,但前提是,数据没有被覆盖掉。 跑路是不可能跑路的,这辈子都不会跑路的! 既然事情已经发生,作为运维我们只能上手解决,还好我遇到了它。extundelete 下载网址:https://sourceforge.net/ [root@gaosh63 ~]#reboot 开始删除文件: 误删除文件后我们要第一时间卸载分区或者以只读方式挂载: 方法1:通过inode结点恢复 首先我们要通过inode结点找到被删除的文件名: 然后我们开始恢复: 查看是否与源文件一样: [ 下面是原来的目录结构: 由上图可见空文件是无法恢复的。 当数据被误删(一般指的是物理文件损坏或者rm导致的误删)造成数据丢失,你会如何处理? 切记:任何补救措施都是事故,并不会显得有多高大上,高大上的运维应该是做好线上线下运维规范,确保不出现运维事故。文章目录
满足你:[root@zmgaosh ~]# rm -rf / rm: 在"/" 进行递归操作十分危险 rm: 使用 --no-preserve-root 选项跳过安全模式 [root@zmgaosh ~]#
博主是一名投身教培事业的标准八零后,叛逆而且追求自由,昵称取自于苏轼的《水调歌头》中的“高处不胜寒”,时刻提醒自己要耐得住寂寞,受的了孤独,在技术的道路上,不畏艰难,勇往直前。
我已经将全部的linux运维体系整理到了gitee上,https://gitee.com/gaosh08/LinuxFamily
欢迎star,投稿,交流,后续还会有python系列和java系列。
Linux操作系统文件删除原理
文件名 存放文件元数据信息 真正存放数据[root@zmgaosh ~]# ls -i b.txt 262170 b.txt
Change 指inode上一次变动的时间
Modify指文件内容上一次变动的时间
Access 指文件上一次打开的时间[root@zmgaosh ~]# stat b.txt 文件:"b.txt" 大小:25 块:8 IO 块:4096 普通文件 设备:fd01h/64769d Inode:262170 硬链接:1 权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root) 最近访问:2020-06-19 20:55:39.327737431 +0800 最近更改:2020-06-19 20:55:34.924697772 +0800 最近改动:2020-06-19 20:55:34.926697790 +0800 创建时间:-
那么问题来了: 误删除文件之后,我们第一时间要做的事情是什么?
如果误删除文件或者数据我们怎么办?
实验思路:
1 . 新加硬盘
2. 进行分区
[root@gaosh63 /]# fdisk /dev/sdb #对sdb进行分区 Command (m for help): n #创建一个新分区 Command action e extended p primary partition (1-4) p #创建一个主分区 Selected partition 1 Last cylinder, +cylinders or +size{K,M,G} (1428-2610, default 2610): +1G #指定分区大小 Command (m for help): w #保存
或
[root@gaosh63 ~]# partx -a /dev/sdb #获得新分区表3. 使用新的分区表,格式化并挂载:
[root@gaosh63 /]# mkdir /tmp/sdb #创建挂载点 [root@gaosh63 ~]# mkfs.ext4 /dev/sb1 #格式化 [root@gaosh63 ~]# mount /dev/sdb1 /tmp/sdb/ #挂载
4. 复制一些测试文件,然后把这些文件删除,然后演示恢复:
[root@gaosh63 ~]# cp /etc/passwd /tmp/sdb1/ [root@gaosh63 ~]# cp /etc/hosts /tmp/sdb/ [root@gaosh63 ~]# echo aaa > a.txt [root@gaosh63 ~]# mkdir -p /tmp/sdb/a/b/c [root@gaosh63 ~]# cp a.txt /tmp/sdb/a/ [root@gaosh63 ~]# cp a.txt /tmp/sdb/a/b/ [root@gaosh63 ~]# touch /tmp/sdb/a/b/text.txt #创建一个空文件,看空文件是否能够恢复
[root@gaosh63 ~]# cd /tmp/sdb/ [root@gaosh63 sdb]# ls a hosts lost+found passwd [root@gaosh63 sdb]# rm -rf a hosts passwd
[root@localhost ~]#cd /root [root@localhost ~]# umount /tmp/sdb
5. 安装extundelet 进行文件的恢复操作
1) 上传extundelete到linux中:
2) 解压并安装extundelte
[root@gaosh63 extundelete-0.2.4]# tar jxvf extundelete-0.2.4.tar.bz2 [root@gaosh63 ~]# cd extundelete-0.2.4 [root@gaosh63]# yum install e2fsprogs-devel [root@gaosh63 extundelete-0.2.4]# ./configure #检查系统安装环境 [root@gaosh63 extundelete-0.2.4]# make -j 4 #编译 [root@gaosh63 extundelete-0.2.4]# make install #安装
3) 尝试进行恢复
方法2:通过文件名恢复
方法3:恢复某个目录,如目录a下的所有文件:
方法4:恢复所有的文件[root@gaosh63 ~]# mkdir test #创建一个目录使用于存放恢复的数据 [root@gaosh63 ~]# cd test/
[root@gaosh63 test]# extundelete /dev/sdb1 --inode 2 . 2 lost+found 11 passwd 12 Deleted hosts 13 Deleted a 7313 Deleted
方法1:通过inode结点恢复
[root@gaosh63 test]# extundelete /dev/sdb1 --restore-inode 12 NOTICE: Extended attributes are not restored. Loading filesystem metadata ... 9 groups loaded. Loading journal descriptors ... 63 descriptors loaded. [root@gaosh63 test]# ls RECOVERED_FILES
[root@gaosh63 test]# diff /etc/passwd RECOVERED_FILES/file.12 # 没有任何输出,说明 恢复成功,只是文件名不一样
方法2:通过文件名恢复
[root@gaosh63 test]# extundelete /dev/sdb1 --restore-file passwd [root@gaosh63 test]# diff /etc/passwd RECOVERED_FILES/passwd # 没有任何输出,说明一样,这次文件名也一样了
方法3:恢复某个目录,如目录a下的所有文件:
root@gaosh63 test]# extundelete /dev/sdb1 --restore-directory a [root@localhost ~]# tree RECOVERED_FILES/ RECOVERED_FILES/ ├── a │ ├── a.txt │ └── b │ └── a.txt ├── file.12 └── hosts
├── a.txt └── b ├── a.txt ├── c └── kong.tx
方法4:恢复所有的文件
[root@gaosh63 test]# extundelete /dev/sdb1 --restore-all
总结:备份数据是王道
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算