【转载】深入理解Linux文件系统
1.rm-rf删除目录里的文件后,为什么可以恢复?

首先创建一个空目录test,目录的blocksize为4096字节

为了空目录还是4096?首先,目录的大小取决它所包含的文件的inode(访问时间,文件的字节数,uid和gid),4096的大小是在建立文件系统时规划的。可以使用dumpe2fs查看

看到根分区的blocksize是默认4096
下面继续,我们在新建的test目录里创建1000个文件
|
1
|
for ((i=0; i<1000; i++)); do touch file$i; done |

由于创建了1000个新文件,所以test目录的blocksize也变大了,随即我们把test目录下的所有文件删除,再次查看test目录发现,目录里为空,但是目录本身的bocksize仍然不变,这也就是我们“数据恢复”的原理:因为rm-rf只是删除了directoryentry相关的描述符(dirfd)而datablocks,inodes和metadata仍然存在磁盘里。

可以使用stace查看我的想法,rm-rf过程中主要调用unlinkat()和fstatat64()两个systemcall

fstatat()这个systemcall作用是getfilestatusrelativetoadirectoryfiledescriptor
unlinkat()这个systemcall作用是removeadirectoryentryrelativetoadirectoryfiledescriptor
可以看出删除的过程中只是获取与目录文件描述信息有关的文件状态并且删除directoryentry对应的文件描述符(其实“目录”的内容就是一长串directoryentry的数据结构,directoryentry用来描述文件名和inode地址)因为datablocks,inodes以及inodes里存放的metadata(文件大小、所属关系等)仍然存在磁盘里,所以目录的大小在删除目录里文件后没有任何变化。
所以使用photorec恢复一下被删除的文件,轻而易举的恢复了。
2.关于使用vim编辑文件大小问题
我们创建一个文件file,vim打开输入内容“1234567”共7个字节

查看file文件的大小为8个字节
使用od查看,vim会自动补上一个字节\n换行符,所以7个字节变成8个字节

3.软连接大小问题
首先给install.log文件创建一个软连接名为install,查看软连接install的大小为11字节,为什么是11字节呢?数数原文件的文件名字节数11字节,这就对了。

4.如何删除一个文件
1.删除文件描述符(filedescriptor),由第一个问题可以知道,执行rm-rf*后其实删除的文件是可以恢复的,也就是说文件的数据还是可以被访问的,是因为datablocks,inodes以及inodes里存放的metadata都在磁盘上。
2.删除元数据(metadata),可以使用>filename,datablock里的真实数据依然存在磁盘里。
3.删除真实数据(datablock),需要产生一些随机数填充文件,然后再删除文件
顺序是ddif=/dev/randomof=filename然后rm-rffilename
这样真实数据就会被删除。更快的方法是使用设备/dev/urandom,不过虽然没有/dev/random的随机性强,但已经能满足擦除磁盘数据的目的了。
为什么使用/dev/random设备比使用/dev/zero设备更好一些呢?
两者设备都会读取之前数据记录(datatrace),使用/dev/zero会比使用/dev/random设备更容易读取到之前的数据记录(datatrace)。
【转载】深入理解Linux文件系统的更多相关文章
- 理解Linux文件系统之inode
很少转发别人的文章,但是这篇写的太好了. 理解inode 作者: 阮一峰 inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础. 我觉得,理解inode,不仅有助于提高系统 ...
- [转]理解Linux文件系统之inode
很少转发别人的文章,但是这篇写的太好了. 理解inode 作者: 阮一峰 inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础. 我觉得,理解inode,不仅有助于提高系统 ...
- 理解Linux文件系统之 inode
一.inode是什么? 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做”扇区”(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统读取硬盘的时候,不会 ...
- 理解Linux文件系统挂载参数noatime nodiratime
很多线上服务器为了提供文件系统IO性能,会在挂载文件系统的时候指定“noatime,nodiratime”参数,意味着当访问一个文件和目录的时候,access time都不会更新.但是如果未指定上面的 ...
- [转载] 深入理解Linux修改hostname
原文: http://www.cnblogs.com/kerrycode/p/3595724.html 当我觉得对Linux系统下修改hostname已经非常熟悉的时候,今天碰到了几个个问题,这几个问 ...
- 深入理解Linux文件系统与日志分析
一.inode和bolck概述 二.链接文件 三.inode节点耗尽故障处理 四.EXT类型文件恢复 五.xfs文件备份和恢复 六.日志文件 一.inode和bolck概述 1.定义 文件数据 文件数 ...
- 深入理解Linux文件系统与日志文件
目录: 一.inode与block 二.inode内容 三.inode的号码 四.inode的大小 五.链接文件 六.inode节点耗尽故障处理 七.恢复EXT类型的文件编译安装extundelete ...
- Linux 文件系统缓存dirty_ratio与dirty_background_ratio两个参数区别
文件系统缓存dirty_ratio与dirty_background_ratio两个参数区别 (2014-03-16 17:54:32) 转载▼ 标签: linux 文件系统缓存 cache dirt ...
- Linux文件系统十问---深入理解文件存储方式(rhel6.5,EXT4)【转】
本文转载自:https://blog.csdn.net/tongyijia/article/details/52832236 前几天在红黑联盟上看了一篇博客<Linux文件系统十问—深入理解文件 ...
随机推荐
- 面向对象程序设计--Java语言第一周编程题:分数
分数 题目内容: 设计一个表示分数的类Fraction.这个类用两个int类型的变量分别表示分子和分母. 这个类的构造函数是: Fraction(int a, int b) 构造一个a/b的分数. 这 ...
- Gym - 101670H Dark Ride with Monsters(CTU Open Contest 2017 贪心)
题目: A narrow gauge train drives the visitors through the sequence of chambers in the Dark Ride attra ...
- Linux之修改主机名(永久生效)
Linux系统安装好后,都会有默认的主机名,这里以CentOS系统为例,默认的主机名为localhost.localdomain,为了便于使用,我们常常需要修改主机名,下面演示的是永久更改主机名的方法 ...
- Python学习笔记之生成器、迭代器和装饰器
这篇文章主要介绍 Python 中几个常用的高级特性,用好这几个特性可以让自己的代码更加 Pythonnic 哦 1.生成器 什么是生成器呢?简单来说,在 Python 中一边循环一边计算的机制称为 ...
- 【01】CSS3 Gradient 分为 linear-gradient(线性渐变)和 radial-gradient(径 向渐变)(转)
CSS3 Gradient 分为 linear-gradient(线性渐变)和 radial-gradient(径 向渐变).而我们今天主要是针对线性渐变来剖析其具体的用法.为了更好的应用 CSS3 ...
- 九度oj 题目1059:abc
题目1059:abc 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4510 解决:3546 题目描述: 设a.b.c均是0到9之间的数字,abc.bcc是两个三位数,且有:abc+bcc ...
- HDU 1540 区间合并线段树
题目大意: 就是给定一堆位置,进行删除还原,最后找到 t 位置上的最大连续位置 #include <cstdio> #include <cstring> #include &l ...
- hdu 1867 kmp匹配
#include<stdio.h> #include<string.h> #define N 100100 void getnext(int next[],char s[]) ...
- jQuery WeUI 组件下拉刷新和滚动加载的实现
最近在做手机版使用到了下拉刷新和滚动加载,记录一下实现过程: 一.引入文件 ? 1 2 3 4 <link rel="stylesheet" href="Conte ...
- codevs4343 找回密码
题目描述 Description jrMz 很喜欢动漫<叛逆的鲁鲁修>(额= =不知道是不是因为他盯上了动画片里的 MM),他准备以一种神奇的方式降临<叛逆的鲁鲁修>世界,所以 ...