Linux文件的删除和软硬链接


文件的构成

由元数据(metadata)和数据(data)两部分组成
硬盘分区上一块空间存该分区上文件的元数据,一块空间存这些文件的数据
因为元数据和数据分离存放,所以需要通过指针地址来进行关联

元数据: 存放文件的属性信息

存放每个文件的元数据信息: innode表

元数据信息包括:

  • inode number 节点号
  • 文件大小、类型、权限
  • UID、GID
  • 所有者、所属组
  • 文件时间戳(三个)
  • 链接数

节点编号:每个文件的唯一标识,innode number (ls -i 可以查看inode编号)
df -i --- 每个空间可用得节点编号数量,不同分区得节点编号不干扰

数据: 存放文件真正的数据

磁盘上存放数据空间的分配单位:块(block),默认大小为4kb。 一个文件的数据部分由若干个块来存放。
inode表和数据部分通过指针地址进行关联(指针是保存了别人地址值的一个变量)

目录文件的组成:

目录文件是一个特殊的文件

两部分组成

  • 元数据 -- 存放属性信息
  • 数据块:数据块存放的是文件列表(inode table)和inode number之间的映射关系

删除目录中的文件:

把目录文件的数据块部分的文件列表和文件的节点编号的映射关系删除。

创建文件

1.系统分配空闲的节点编号
2.系统在存放元数据信息的空间添加上对应的该文件的元数据信息
3.在存放数据的空间分配指定大小的空间给该文件存放数据

解决磁盘空间不足的问题

方法一:

1.直接删除占用大的文件,但是若是这个文件被其他进程使用,即使删除了文件但是空间仍然没有被释放。
2. lsof | grep delete --- 照到被删除的文件,看他被那个进程占用,使用kaill关闭这个进程就行了

方法二:

使用重定向创建一个空文件去替换原有的文件---cat /dev/null > 指定文件

创建文件出现空间不够的问题

1.磁盘分区的节点号 inode用完了 可以使用 df -i 进行查看
2.分区的空间真的占用满了 使用df -h 进行查看

软硬链接

硬链接

硬链接:一个文件多个文件名
创建完硬链接后 权限后面的数字会显示这个文件的文件名个数 --- 连接数表明有几个文件名
链接数:

硬链接特点:

  1. 不能跨设备、跨分区
  2. 可以通过多种路径访问到文件
  3. 不允许对目录文件创建硬链接
  4. 每创建一个硬链接 链接数就加1
    注意:
    不允许对目录文件创建硬链接,目录文件链接数2的来源:
    一个是自己本身的名字,一个是目录文件里面的点(.)

软(符号)链接

和源文件非同一个文件、源文件链接数没有变、创建的文件类型和源文件不一样

特点:

  1. 软链接和源文件不是同一个文件(不像硬链接一样)
  2. 创建软连接后,源文件的连接数没有变化
  3. 软连接的文件大小和源文件没有关系,软连接的大小就是源文件路径字符的大小
  4. 软链接支持跨设备和目录文件创建软链接

删除源文件后,软连接就不能使用了
允许跨分区进行操作、且支持给目录文件创建链接

以相对路径创建软链接:

  • 创建软链接时,如果源文件使用相对路径,则这个路径应该相对于软链接文件的相对路径,而不是相对于自己本身
  • 创建一个软连接到一个目录下,没有指定软连接的名字,那么软连接的名字和源文件名一致