Inode Table

inode表内存储了文件的元数据,包括文件权限、属主属组、文件大小、访问时间、修改时间、元数据变更时间和真正的数据存储位置的指向。

inode结构表

执行cp、rm、mv操做文件在磁盘上的变化

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

rm:链接数递减,释放inode号,把数据块标记为空闲。删除目录项,数据不会马上被删除,当另一个文件使用数据块时将被覆盖

mv:移动的目标和源在同一文件系统,用新的文件名创建相对应的新目录项,删除旧的文件名,不影响磁盘上的数据位置,若源和目标不在同一文件系统,mv执行效果相当于cp+rm

硬链接

硬链接就是在同一文件系统内,不同名字,inode号和磁盘数据位置相同的一种文件。当硬链接被创建时文件的链接数+1,当文件被删除时,链接数-1,当链接数为0时,该文件被删除,硬链接不能跨分区。

命令格式:

1
ln filename [linkname]

示例:

1
2
3
4
5
6
[root@centos7 data]# ll passwd
-rw-r--r-- 1 root root 2265 Mar 9 13:32 passwd 链接数为1
[root@centos7 data]# ln passwd passwd1
[root@centos7 data]# ll passwd passwd1
-rw-r--r-- 2 root root 2265 Mar 9 13:32 passwd
-rw-r--r-- 2 root root 2265 Mar 9 13:32 passwd1 链接数为2,其余都一样

软链接:

软链接是一个链接指向另一个文件,他可以对目录进行链接,也可以跨分区创建,其文件大小为指向的路径字符串的长度,创建或删除不会增加或减少目标文件inode的引用计数。

命令格式:

1
ln -s filename [linkname]

示例:

1
2
3
4
[root@centos7 data]# ln -s ../data/passwd /passwd
[root@centos7 data]# ll passwd /passwd
-rw-r--r-- 2 root root 2265 Mar 9 13:32 passwd
lrwxrwxrwx 1 root root 6 Mar 9 19:53 /passwd -> ../data/passwd

注意:软链接使用相对路径时,是相对于链接文件的相对路径,Linux系统内的软链接都是相对路径,所以在创建软链接时推荐使用相对路径。

软硬链接的区别:

区别 软链接 硬链接
文件 不同的文件 同一个文件
inode号 不同 相同
能否跨分区 不能
链接数 不增加 增加