Linux文件删除

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/benben_2015/article/details/82815549

Linux是通过link的数量来控制文件删除的,只有当一个文件不存在任何link的时候,这个文件才会被物理的删除。那么这个link是什么呢?就需要了解软连接和硬链接。

Linux具有为一个文件起多个名字的功能,称为链接。被链接的文件可以存放在相同的目录下,但是必须有不同的文件名,而不用在硬盘上为同样的数据重复备份。被链接的文件如果拥有相同的文件名,那么必须存放在不同的目录下。

Linux中每个文件存在两个计数器:i_counti_nlink,即引用计数和硬链接计数。通过命令ls -l可以看到文件的硬链接数i_nlink

通过下面的原理图,我们先来大体了解下。
在这里插入图片描述
上图中的inode叫做索引节点号,这是Linux文件系统管理文件的方式,相当于文件的地址。每个文件都与一个inode相关联,该inode由整数标识。inode存储有关文件和目录的信息,例如:文件所有权、访问模式(读取、写入,执行)和文件类型。在许多类型的文件系统实现中,最大数量的inode在创建文件系统时是固定的,这限制了文件系统可以容纳的最大文件数。你可以通过命令$ls -i来查看文件的inode编号。从图中可以看出:不同的硬链接文件,拥有相同的inode值。而不同软链接文件,拥有不同的inode值。
block叫做文件数据块,不同的链接文件,里面存放的内容不同。软链接的block中存放的内容是对源文件的路径名的指向,而硬链接中存放的是源文件的内容。

硬链接

创建方式

ln命令,默认的连接类型是硬链接。$ ln 源文件 硬链接文件

作用

如果删除硬链接对应的源文件,则硬链接文件仍然存在,而且保存了原有的内容,这样可以起到防止因为误操作而删除文件的作用。

划重点

  • 删除硬链接文件或者删除源文件任意之一,文件实体并未被删除;
  • 只有删除了源文件及所有对应的硬链接文件,文件实体才会被删除;
  • 对于目录,不可以创建硬链接,但可以创建软链接;
  • 不同的文件系统之间不能做硬链接,也就是说链接文件和被链接文件必须位于同一个文件系统中;
  • rm会删除链接数。

软链接

创建方式

和硬链接创建时的命令相同,只是多了一个参数-s,例如:$ ln -s 源文件 硬链接文件

作用

  1. 方便管理,可以把一个复杂路径下的文件链接到一个简单路径下方便用户访问;
  2. 解决文件系统磁盘空间不足的情况。

划重点

  • 删除源文件,只是删除了数据,不会删除链接。一旦以同样的文件名创建源文件,链接将继续指向该文件的新数据;
  • 在目录长列表中,符号链接作为一种特殊的文件类型显示出来,其第一个字母时l
  • 符号链接文件的大小是其来凝结文件的路径名中的字节数;
  • rm会删除链接数。

示例

[benben@localhost test]$ ll
total 8
-rw-rw-r--. 2 benben benben 13 Sep 22 18:02 b.txt
-rw-rw-r--. 2 benben benben 13 Sep 22 18:02 c.txt
lrwxrwxrwx. 1 benben benben  5 Sep 22 18:17 d.txt -> b.txt
lrwxrwxrwx. 1 benben benben  5 Sep 22 18:18 e.txt -> b.txt
[benben@localhost test]$ ls -i
17510082 b.txt  17510082 c.txt  17510081 d.txt  17510083 e.txt

参考文章:

  1. inode
  2. Linux下软硬链接文件原理图及文件删除原理
  3. 软链接和硬链接详解
  4. 理解 Linux 的硬链接与软链接

猜你喜欢

转载自blog.csdn.net/benben_2015/article/details/82815549
今日推荐