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文件系统的更多相关文章

  1. 理解Linux文件系统之inode

    很少转发别人的文章,但是这篇写的太好了. 理解inode   作者: 阮一峰 inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础. 我觉得,理解inode,不仅有助于提高系统 ...

  2. [转]理解Linux文件系统之inode

    很少转发别人的文章,但是这篇写的太好了. 理解inode   作者: 阮一峰 inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础. 我觉得,理解inode,不仅有助于提高系统 ...

  3. 理解Linux文件系统之 inode

    一.inode是什么? 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做”扇区”(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统读取硬盘的时候,不会 ...

  4. 理解Linux文件系统挂载参数noatime nodiratime

    很多线上服务器为了提供文件系统IO性能,会在挂载文件系统的时候指定“noatime,nodiratime”参数,意味着当访问一个文件和目录的时候,access time都不会更新.但是如果未指定上面的 ...

  5. [转载] 深入理解Linux修改hostname

    原文: http://www.cnblogs.com/kerrycode/p/3595724.html 当我觉得对Linux系统下修改hostname已经非常熟悉的时候,今天碰到了几个个问题,这几个问 ...

  6. 深入理解Linux文件系统与日志分析

    一.inode和bolck概述 二.链接文件 三.inode节点耗尽故障处理 四.EXT类型文件恢复 五.xfs文件备份和恢复 六.日志文件 一.inode和bolck概述 1.定义 文件数据 文件数 ...

  7. 深入理解Linux文件系统与日志文件

    目录: 一.inode与block 二.inode内容 三.inode的号码 四.inode的大小 五.链接文件 六.inode节点耗尽故障处理 七.恢复EXT类型的文件编译安装extundelete ...

  8. Linux 文件系统缓存dirty_ratio与dirty_background_ratio两个参数区别

    文件系统缓存dirty_ratio与dirty_background_ratio两个参数区别 (2014-03-16 17:54:32) 转载▼ 标签: linux 文件系统缓存 cache dirt ...

  9. Linux文件系统十问---深入理解文件存储方式(rhel6.5,EXT4)【转】

    本文转载自:https://blog.csdn.net/tongyijia/article/details/52832236 前几天在红黑联盟上看了一篇博客<Linux文件系统十问—深入理解文件 ...

随机推荐

  1. LTTng

    Waiting for dig... http://frederic-wou.net/lttng/

  2. 【2018百度之星资格赛】F 三原色图 - 最小生成树

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6349 Knowledge Point: 最小生成树算法Prim&Kruskal Summari ...

  3. [不断更新中] 各种错误&&总结

    各种错误 无论感觉多稳都要对拍对拍对拍!!! 不要爆long long 不要爆long long 不要爆long long 不要爆long long 不要爆long long 不要爆long long ...

  4. Swoft 新手向教程 - 通过 Docker 搭建一个开发环境

    本系列文章将从使用层面介绍 Swoft 框架的使用及业务开发,面向初中级的 PHPer Swoft首个基于 Swoole 原生协程的新时代 PHP 高性能协程全栈组件化框架,内置协程网络服务器及常用的 ...

  5. DemoKit编译过程错误

    1.编译出错: 2.原因(将代码注释):

  6. zoj 3812 状压dp

    转载:http://blog.csdn.net/qian99/article/details/39138329 题意:给出n个物品,每个物品有两种属性Wi,Ti,有q组查询,每组查询要求在n个物品中选 ...

  7. nyoj_123_士兵杀敌(四)_201404131143

    士兵杀敌(四) 时间限制:2000 ms  |  内存限制:65535 KB 难度:5   描述 南将军麾下有百万精兵,现已知共有M个士兵,编号为1~M,每次有任务的时候,总会有一批编号连在一起人请战 ...

  8. 最小生成树 D - Constructing Roads

    There are N villages, which are numbered from 1 to N, and you should build some roads such that ever ...

  9. 夜话JAVA设计模式之代理模式(Proxy)

    代理模式定义:为另一个对象提供一个替身或者占位符以控制对这个对象的访问.---<Head First 设计模式> 代理模式换句话说就是给某一个对象创建一个代理对象,由这个代理对象控制对原对 ...

  10. [bzoj1084][SCOI2005]最大子矩阵(DP)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1084 分析: m=1时:相当于只有一行数,让你取出p段,使得总和最大 明显可以DP,f ...