003. Linux基础三 P4 (inode、软硬链接)(待修订)

1 文件元数据和节点表结构

inode表结构

每个文件的属性信息,比如:文件的大小,时间,类型等,称为文件的元数据(meta data)
node 表中有很多条记录组成,第一条记录对应的存放了一个文 件的元数据信息
第一个node表记录对应的保存了以下信息:

  • inode number 节点号
  • 文件类型
  • 权限
  • UID
  • GID
  • 链接数(指向这个文件名路径名称个数)
  • 该文件的大小和不同的时间戳
  • 指向磁盘上文件的数据块指针
  • 有关文件的其他数据

目录

目录是个特殊文件,目录文件的内容保存了此目录中文件的列表及inode number对应关系

  • 文件引用一个是 inode号
  • 人是通过文件名来引用一个文件
  • 一个目录是目录下的文件名和文件inode号之间的映射

inode表和目录003. Linux基础三 P4 (inode、软硬链接)(待修订)

CP和inode

分配一个空闲的inode号,在inode表中生成新条目
在目录中创建一个目录项,将名称与inode编号关联
拷贝数据生成新的文件

rm和inode

链接数递减,从而释放的inode号可以被重用
把数据块放在空闲的列表中
删除目录项
数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖

mv和inode

如果mv命令的目标和源在相同文件系统
用新的文件名创建新的目录项
删除旧目录条目对应的旧文件名
不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动
如果src和dst不在同一个的文件系统上,mv相当于cp和rm

删除大文件

[root@centos7 dir1]# echo abc > a
[root@centos7 dir1]# cat a
abc
[root@centos7 dir1]# cat /dev/null > a
[root@centos7 dir1]# cat a

软链接和硬链接的区别

硬链接本质上就是给一个文件取一个新的名称,实质是同一个文件

ln filename [linkname]

软链接指向另一个文件,类似快捷方式,软链接文件和原文件本质上不是同一个文件

ln -s filename [linkname]

[root@centos7 ~]# touch b
[root@centos7 ~]# ll
总用量 4
-rw-r--r--. 1 root root    0 10月 18 09:26 a
-rw-------. 1 root root 1444 10月 18 08:45 anaconda-ks.cfg
-rw-r--r--. 1 root root    0 10月 18 09:31 b
[root@centos7 ~]# ln a c
[root@centos7 ~]# ll
总用量 4
-rw-r--r--. 2 root root    0 10月 18 09:26 a
-rw-------. 1 root root 1444 10月 18 08:45 anaconda-ks.cfg
-rw-r--r--. 1 root root    0 10月 18 09:31 b
-rw-r--r--. 2 root root    0 10月 18 09:26 c
[root@centos7 ~]# ln -s b d
[root@centos7 ~]# ll
总用量 4
-rw-r--r--. 2 root root    0 10月 18 09:26 a
-rw-------. 1 root root 1444 10月 18 08:45 anaconda-ks.cfg
-rw-r--r--. 1 root root    0 10月 18 09:31 b
-rw-r--r--. 2 root root    0 10月 18 09:26 c
lrwxrwxrwx. 1 root root    1 10月 18 09:31 d -> b
[root@centos7 ~]# 

003. Linux基础三 P4 (inode、软硬链接)(待修订)

003. Linux基础三 P4 (inode、软硬链接)(待修订)

上一篇:AER, AEJ上用准自然实验识别的实证文章有哪些?含程序和code, 不看至少需要收藏一下!


下一篇:Xshell Linux cenOS命令提示符改颜色