linux 文件删除详解

1.1 linux 文件的存储

linux在建立文件系统时会将磁盘逻辑上规划成各个块,inode块 与block块 每一个块都对应一个号码(inode号 block号),在本文件系统中唯一 ,每个inode 块缺省为256 byte  block块缺省为4K 。

[[email protected] ~]# dumpe2fs /dev/sda1|egrep  -i "block count|Inode count|block size|inode size"

dumpe2fs 1.41.12 (17-May-2010)

Inode count:              51200

Block count:              204800

Reserved block count:     10240

Block size:               1024

Inode size:           128

[[email protected] ~]#

创建目录时系统会分配至少一个inode 块和block块,创建一个档案时文件系统会分配至少一个inode与相当于档案大小的 block 块 ,

inode块存储目录或文件的属性,如下:

  • owner/group
  • read/wirte/excute
  • type
  • ctime    atime     mtime
  • size
  • flag(ID)
  • pointer  (指向该文件对应的block)

block块则存储文件的数据内容:

对于目录:block 存储该目录下的文件结构并为每一个文件名做一条指向该文件inode的链接(通过inode号表示)。

对于文件:block存储文件真正的内容数据,

注意:文件的block内并不存放文件名

2.1 文件的读取

读取文件这是读取文件的block快的内容,系统是怎么找到block的呢?

以读取/data/test.txt 为例:

首先系统会去/ 找到文件上级目录即/data 对应的inode号,通过inode号找到inode块。inode块中记录了此目录的属性,系统会验证是否满足/data 的权限要求,若符合会得到/data

对应的block号,找到block块,block块中记录了其下文件及目录对应的inode号,找到/data/test.txt的inode块,比对是否满足权限要求,符合会得到/data/test.txt的block号,找到block块读取内容。

如图:

由此可知:文件删除自是删除文件上级目录中对于该文件的一条记录。以使环节四中断,系统自然找不到  文件。

3.1 结合文件权限相互验证

实例1-1  删除/home/redhat/data/test  文件

此时对redhat用户对test文件具有读写执行权限

执行删除

没有权限无法删除

文件删除只是删除文件上级目录中对于该文件的一条记录,实际的操作对象是文件的上级目录的block块,需要对上级目录具有wx权限,

赋予data wx

此时data下以没有了 test

由于之前为test创建了一个硬链接 text,此时test并没有被删除,它的数据还是真实存在的,

删除的自是test的一个硬链接,若要真正删除需要删除文件所有的硬链接

文件所占有的inode与block 并不会清空,只是打上未使用的标记,当有文件写入时会覆盖标记的inode和block

以上删除的自是文件系统内的test,如果有程序在调用test  那么它的磁盘空间是不会释放的,需要停止程序,释放test的存储空间,这样才是删除test。

4.1 综上所述:


linux  是通过控制文件的link数来实现文件的删除。

link 指  文件的硬链接   i-nlink

以及进程调用的 i-count

只有两个同事不在时文件才会被删除

可使用lsof  -d  查看使用文件的进程 一结束进程 释放文件空间。

时间: 2024-10-14 04:27:05

linux 文件删除详解的相关文章

Linux文件权限详解 文件和目录权限概述

Linux文件权限详解 文件和目录权限概述 在linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录. 通过设定权限可以从以下三种访问方式限制访问权限:只允许用户自己访问:允许一个预先指定的用户组中的用户访问:允许系统中的任何用户访问.同时,用户能够控制一个给定的文件或目录的访问程度.一个文件活目录可能有读.写及执行权限.当创建一个文件时,系统会自动地赋予文件所有者读和写的权限,这样可以允许所有者能够显示文件内容和修改文件.文件所有者可以将这些权限改变

Linux文件权限详解

在Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录. 通过设定权限可以从以下三种访问方式限制访问权限:只允许用户自己访问:允许一个预先指定的用户组中的用户访问:允许系统中的任何用户访问.同时,用户能够控制一个给定的文件或目录的访问程度.一个文件活目录可能有读.写及执行权限.当创建一个文件时,系统会自动地赋予文件所有者读和写的权限,这样可以允许所有者能够显示文件内容和修改文件.文件所有者可以将这些权限改变为任何他想指定的权限.一个文件也许只有读权限

Linux文件解压缩详解-转

linux zip命令 1.zip -r myfile.zip ./*将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件. 2.unzipunzip -o -d /home/sunny myfile.zip把myfile.zip文件解压到 /home/sunny/-o:不提示的情况下覆盖文件:-d:-d /home/sunny 指明将文件解压缩到/home/sunny目录下: 3.其他zip -d myfile.zip smart.txt删除压缩文

Linux文件类型详解

一.Linux文件类型分:普通文件.目录文件.链接文件.设备文件.管道文件. 1.普通文件:由ls -al显示属性时,第一个属性为 [-],例如 [-rwxrwxrwx].包括: 1.纯文本文件(ASCII):是内容可以直接读到的数据,例如 数字.字母等等. 2.二进制文件(binary):图片.音频.视频文件. 3.数据格式文件(data):某些程序在运行过程中,会读取特定格式的文件,这些特定格式的文件可以称为数据文件(datafile). 2.目录文件(directory)(目录或文件夹),

文件删除详解

第1章 创建文件的时候提示no space left to device的解决办法 1.1 inode被用完. 模拟环境: [[email protected] ~]# dd if=/dev/zero of=/dev/test count=10 bs\=10M 10+0 records in 10+0 records out 104857600 bytes (105 MB) copied, 0.303514 s, 345 MB/s [[email protected] ~]# mkfs.ext4

CentOS \Linux文件权限详解

文件和目录权限概述 在linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录. 通过设定权限可以从以下三种访问方式限制访问权限:只允许用户自己访问:允许一个预先指定的用户组中的用户访问:允许系统中的任何用户访问.同时,用户能够控制一个给定的文件或目录的访问程度.一个文件活目录可能有读.写及执行权限.当创建一个文件时,系统会自动地赋予文件所有者读和写的权限,这样可以允许所有者能够显示文件内容和修改文件.文件所有者可以将这些权限改变为任何他想指定的权限.一

Linux 文件时间详解 ctime mtime atime以及 find 命令

Linux系统文件中三个主要的时间属性: atime(access time)   mtime(modify time)   ctime(change time) 这三个时间很容易混淆,须加以区分 atime(access time):在读取文件或者执行文件时更改,即文件最后一次被读取或执行的时间. mtime(modify time):在写入文件时随文件内容的更改而更改,是指文件内容最后一次被修改的时间. ctime(change time):在写入文件.更改所有者.权限或链接设置时随 Ino

LINUX 文件权限详解

ls -l // 查看文件的权限 等价于 ll 文件的权限信息查看 -rw-rw-r-- 1 ceshi ceshi 891 Aug 8 17:28 server drwxrwxr-x 10 ceshi ceshi 4096 Aug 12 17:51 www.aa.com 开始 10个字符确定不同用户对文件的操作权限 第一个字符代表文件(-).目录(d).连接(l) 其余的字符每三个一组(rwx),读(r).写(w).执行(x) 第一组rwx:文件所有者的权限是读.写和执行 第二组rw-:与文件

Linux文件时间详解ctime、mtime、atime【转】

本文转载自:http://blog.csdn.net/doiido/article/details/43792561 Linux系统文件有三个主要的时间属性,分别是 ctime(change time), atime(access time), mtime(modify time).这三个时间很容易混淆,准备深入了解linux的童鞋请区分这三者的区别 atime:Access time, 是在读取文件或者执行文件时更改,即文件最后一次被读取的时间.说明: st_atime           T