Linux文件系统恢复(数据误删恢复)_linux怎么恢复rm误删的xfs数据-程序员宅基地

技术标签: linux  

Linux文件系统恢复(数据误删恢复)

inode与block

  • 文件数据包括元信息与实际数据
  • 文件存储在硬盘上,硬盘最小的存储单位时扇区,每个扇区存储512字节
  • block(块)
    • 连续的八个扇区组成一个block(4k)
    • 是文件存取的最小单位
  • inode(索引节点)
    • 中文译名为“索引节点”,也叫i节点
    • 用于存储文件元信息

文件是存储在硬盘上的,硬盘的最小存储单位叫做"扇区”(sector),每个扇区存储512字节。

一般连续八个扇区组成一个"块"(block),一个块是4K大小,是文件存取的最小单位。操作系统读取硬盘的时候,是一次性连续读取多个扇区,即一个块一个块的读取的。

文件数据包括实际数据与元信息(类似文件属性)。文件数据存储在"块"中,存储文件元信息(比如文件的创建者、创建日期、文件大小、文件权限等)的区域就叫做inode。因此,一个文件必须占用一个inode,并且至少占用一个 block

inode不包含文件名。文件名是存放在目录当中的。Linux系统中一切皆文件,因此目录也是一种文件。

每个inode都有一个号码,操作系统用inode号码来识别不同的文件。linu系3统内治系个便m父i1什da号码对网一个文件名。n人。Ni统来说,文件名只是inode号码便于识别的别称,文件名和inode号码是一一对应关系,每个inode号码对应一个文件名。所以,当用户在Linux系统中试图访问一个文件时,系统会先根据文件名去查找它对应的inode号码;通过inode号码,获取inode信息,根据inode信息,看该用户是否具有访问这个文件的权限;如果有,就指向相对应的数据block,并读取数据。

inode包含文件的元信息

  • 文件的字节数

  • 文件拥有者的User ID·文件的Group lD

  • 文件的读、写、执行权限

  • 文件的时间戳

用户通过文件名打开文件时,系统内部的过程

  1. 系统找到这个文件名对应的inode号码
  2. 通过inode号码,获取inode信息
  3. 根据inode信息,找到文件数据所在的block,读出数据

查看文件对应的inode号码有两种方式

用ls -i查看

ls -i 文件名

在这里插入图片描述

用stat命令查看

stat 文件名

在这里插入图片描述

  • 目录文件的结构
    • 目录也是一种文件
    • 目录文件的结构
  • 每个indoe都有一个号码,操作系统用inode号码来识别不同的文件
  • Linux系统内部不使用文件名

Linux系统文件三个重要的时间属性

最近访问atime (accesstime):

当使用这个文件的时候就会更新这个时间。

最近更改mtime (modification time):

当修改文件的内容数据的时候,就会更新这个时间,而更改权限或者属性,mtime不会改变,这就是和ctime的区别。

最近改动ctime (status time):

当修改文件的权限或者属性的时候,就会更新这个时间,ctime并不是create time,更像是change time,只有当更新文件的属性或者权限的时候才会更新这个时间,但是更改内容的话是不会更新这个时间。

文件存储小结

硬盘分区后的结构

在这里插入图片描述

访问文件的简单流程

在这里插入图片描述

inode的大小

  • inode也会消耗硬盘空间,所以格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是 inode区,存放 inode 所包含的信息。每个inode 的大小,一般是128字节或256字节。
    通常情况下不需要关注单个inode 的大小,而是需要重点关注inode总数。inode的总数在格式化时就给定了,执行df -i"命令即可查看每个硬盘分区对应的的inode总数和已经使用的inode数量。

inode的作用

  • 由于inode 号码与文件名分离,导致Linux系统具备以下几种特有的现象:

    1. 文件名包含特殊字符,可能无法正常删除。这时直接删除inode,能够起到删除文件的作用;

    2. 移动文件或重命名文件,只是改变文件名,不影响inode 号码;

    3. 打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名。

    4. 使用vi编辑器修改文件数据保存后,会生成一个新的inode 号码。

硬链接与软连接

为文件或目录建立链接文件

链接文件分类

软连接 硬链接
删除原始文件后 失效 仍可使用
适用范围 适用于文件和目录 只可用于文件
保存位置 源文件位置 链接文件位置

模拟inode占用满的情况

在这里插入图片描述

使用for循环创建文件或者使用touch直接创建

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

直接删除即可恢复被占用的inode号

恢复误删除文件

恢复EXT类型的文件

extundelete 是一个开源的 Linux 数据恢复工具,支持 ext3、ext4文件系统。(ext4只能在centos6版本恢复)

下载网址:extundelete-0.2.4.tar.bz2

wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2 ##直接导入安装包

yum -y install e2fsprogs-devel e2fsprogs-libs ##yum安装依赖包

tar jxvf extundelete-0.2.4.tar.bz2

在这里插入图片描述

创建一个软链接到/usr/bin目录中能够让系统识别到extundelete工具下的所有命令

ln -s /usr/local/extundelete/bin/* /usr/bin

模拟删除并执行恢复操作

删除文件

切换到家目录准备使用extundelete恢复文件

cd ~

umount /test

恢复/dev/sdb1 文件系统下的所有内容

extundelete /dev/sdb1–restore-all

在当前目录下会出现一个RECOVERED FILES/目录,里面保存了已经恢复的文件

ls RECOVERED_FILES/

恢复XFS类型的文件

xfsdump命令格式

xfsdump -f 备份存放位置 要备份的路径或设备文件

xfsdump备份级别(默认为0)

  • 0:完全备份
  • 1-9:增量备份

xfsdump常用选项:

-f∶指定备份文件目录

-L∶指定标签 session label

-M∶指定设备标签 media label

-s∶备份单个文件,-s 后面不能直接跟路径

-L和-s选项如果不指定,在备份过程中会进行交互式的输入

xfsdump使用限制∶

1.只能备份已挂载的文件系统

2.必须使用root的权限才能操作

3.只能备份XFS文件系统

4.备份后的数据只能让xfsrestore解析

5.不能备份两个具有相同UUID的文件系统(可用 blkid命令查看)

使用 xfsdump 命令备份整个分区

首先检查一下xfsdump文件包是否安装,一般CentOS7默认安装,然后用xfsdump备份整个磁盘

rpm -qa l grep xfsdump

yum install -y xfsdump

xfsdump -f /opt/dump_sdb1 /dev/sdb1 [-L dump_sdb1 -M sdb1**]**

模拟数据丢失并使用 xfsrestore 命令恢复文件

cd /test/

rm -rf ./

ls~

xfsrestore -f /opt/dump_sdb1 /test/

盘**

rpm -qa l grep xfsdump

yum install -y xfsdump

xfsdump -f /opt/dump_sdb1 /dev/sdb1 [-L dump_sdb1 -M sdb1**]**

模拟数据丢失并使用 xfsrestore 命令恢复文件

cd /test/

rm -rf ./

ls~

xfsrestore -f /opt/dump_sdb1 /test/

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44938203/article/details/121592364

智能推荐

使用@RequestMapping+@Pathvariable获取url中携带的参数-程序员宅基地

文章浏览阅读10w+次。以下面的代码为例import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import top.huas...

抢单软件开发原理_软件开发原理-程序员宅基地

文章浏览阅读5.1k次。抢单软件开发原理Rubbish software is produced when we try to do everything at once. 当我们尝试一次做所有事情时,就会产生垃圾软件。 Principles, guidelines, best practices, and rules of thumb — they all make your life easier. Without..._抢单软件 博客园

tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory-程序员宅基地

文章浏览阅读1.4k次。在配置日志文件的时候slf4j和logback的时候报错,版本问题:Caused by: java.lang.IllegalAccessError: tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory at org.slf4j.LoggerFac..._tried to access field

如何基于layui的laytpl实现数据绑定_layui laytpl-程序员宅基地

文章浏览阅读1.5k次。1.前言一开始用layui做了几个管理系统,所以用起来觉得确实很容易上手,管理后台最常用的就是form和table以及弹窗类。layui提供的form table layer已经是很简洁好用了,抛开底层的封装不说,给我们展现出来的使用方法我觉得是非常简化了。管理用到的除了form table layer之外,经常会有一些统计数据展示或者详情页这种内容展示。那么一些用到的统计数据(除图表),如文字..._layui laytpl

#3使用html+css+js制作网页 番外篇 使用python flask 框架 (I)_使用了python的flask框架,html+css+js搭建网页进行展示。-程序员宅基地

文章浏览阅读1.3k次。#3使用html+css+js制作网页 番外篇 使用python flask 框架0. 本系列教程1. 准备a.pythonb. flaskc. flask 环境安装d. flask 基本文件结构2. 后端实现0. 本系列教程#1使用html+css+js制作网站教程 准备#2使用html+css+js制作网站教程 测试#3使用html+css+js制作网页 制作登录网页#3使用html+css+js制作网页 番外篇 制作接收php1. 准备a.pythonpython在计算机语言不同于非常_使用了python的flask框架,html+css+js搭建网页进行展示。

随便推点

postgresql的配置文件中找不到postgresql.conf和pg_hba.conf_没有postgresql.conf-程序员宅基地

文章浏览阅读3.2k次,点赞2次,收藏2次。前言:这两天给我们的服务器上面装了一个postgresql10.3-2,配置远程连接的时候发现找不到postgresql.conf和pg_hba.conf两个文件,反而有postgresql.conf.sample和pg_hba.conf.sample两个文件,这可就见了鬼了,最气人的是配置这两个文件发现不管用,还是不能远程连接,下面我们来看下详细信息。我们先来看下10.3-2..._没有postgresql.conf

小白闲谈——兴趣是从什么时候开始的......-程序员宅基地

文章浏览阅读853次。人的财富不能一直增加。忘了几岁的时候就爱鼓捣bb机,从小到大,每当我拿到一样电子设备,首先就是打开它的设置界面,探索这个电子设备的神秘之处,看看怎样找到它的开发者模式,然后再查看它的所有功能,避免自己没有物尽其用。2005年,偷拿妈妈的翻盖手机玩兔子吃萝卜的游戏,跳出一个咖啡的图标来,兴奋地通过一关后再把手机合上。等到短信过来提示扣除10元话费,看着妈妈奇怪是谁盗用了她的话费,就是怀疑不到我头上来…那时候会偷偷窃喜,觉得这个咖啡图标就是个好玩的秘密。2007年,全校风靡数码宠物,每个人都激动地守着自己

Linux命令添加用户_linux 添加用户命令-程序员宅基地

文章浏览阅读2.8k次,点赞3次,收藏2次。分享一段使用Linux云服务器遇到的问题和解决思路。_linux 添加用户命令

【环境配置】GO 语言环境配置(Ubuntu 20.04)-程序员宅基地

文章浏览阅读1.2k次。获取安装包 wget https://studygolang.com/dl/golang/go1.13.4.linux-amd64.tar.gz解压文件sudo tar xfz go1.13.4.linux-amd64.tar.gz -C /usr/local配置全局变量export GOROOT=/usr/local/go export GOPATH=$PATH:$GOROOT/bin 验证版本go version

Android Q播放器(编译报错处理)_hidl please update abi references by running platf-程序员宅基地

文章浏览阅读7.9k次,点赞8次,收藏6次。最新在Bring up公司的播放器从Android 4.4到Android Q,期间遇到很多“坑”,总结出来记录一下。期间也会简单介绍一下在Android系统中新建一个类似Nuplayer的播放器大概需要哪些步骤。代码目录:frameworks/av/media/libmediaplayerservice/最先动的地方是MediaPlayerFactory.cpp,我的做法是根据项目需求,..._hidl please update abi references by running platform/

Upcasting and Downcasting in Java-程序员宅基地

文章浏览阅读153次。Upcasting and Downcasting in JavaA process of converting one data type to another is known as Typecasting and Upcasting and Downcasting is the type of object typecasting. In Java, the object can also be typecasted like the datatypes. Parent and Child obje_downcasting in java