Linux操作系统的文件链接

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
标题:Linux操作系统的文件链接
内容:文件链接
时间:2019年4月15日
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1. 文件系统文件存储方式
例如:/dir1000/file100.txt
--------------------------------------------------------------------------
inode | block
--------------------------------------------------------------------------
100(dir1000) | file100.txt-->200以及访问权限等等信息
--------------------------------------------------------------------------
200(file001.txt) | file100.txt文件中的真正的内容
--------------------------------------------------------------------------
访问过程:
访问文件所在的目录,找到文件对应的inode节点号
再通过inode节点号,到文件系统中查看真正的文件内容

2. 符号链接(软链接)与硬链接
2.1 符号链接与软链接举例
[root@test ~]# mkdir /dir1000
[root@test ~]# mkdir /dir2000
[root@test ~]# mkdir /dir3000
[root@test ~]# touch /dir1000/file001
[root@test ~]# ln /dir1000/file001 /dir2000/file002
[root@test ~]# ln -s /dir1000/file001 /dir3000/file003 //符号链接
[root@test ~]# ll /dir1000/file001 /dir2000/file002 /dir3000/file003
-rw-r--r-- 2 root root 0 Apr 15 00:16 /dir1000/file001
-rw-r--r-- 2 root root 0 Apr 15 00:16 /dir2000/file002
lrwxrwxrwx 1 root root 16 Apr 15 00:17 /dir3000/file003 -> /dir1000/file001

2.2 符号链接与硬链接存储方式
符号链接:
--------------------------------------------------------------------------
inode | block
--------------------------------------------------------------------------
100(dir1000) | file001->200以及访问权限等等信息
--------------------------------------------------------------------------
200(file001) | file001文件中的真正的内容
--------------------------------------------------------------------------
300(dir3000) | file003->400
--------------------------------------------------------------------------
400(file003) | file003文件内容(/dir1000/file001)
--------------------------------------------------------------------------
符号链接访问过程:
访问软链接文件的所在的目录并获取软链接文件的inode
访问软链接文件并获取原文件所在的位置
访问软链接文件所指向原文件的父级目录,判断 是否具备访问权限,获取原文件的inode
访问软链接指向的原文件内容

硬链接:
--------------------------------------------------------------------------
inode | block
--------------------------------------------------------------------------
100(dir1000) | file001->200以及访问权限等等信息
--------------------------------------------------------------------------
200 | 文件中的真正的内容
--------------------------------------------------------------------------
300(dir3000) | file003->200
--------------------------------------------------------------------------
硬链接访问过程:
访问硬链接文件所在目录并获取文件的inode节点号,判断是否具备访问权限
根据获取的inode节点号读取文件的真正的内容

2.3 符号链接与硬链接的特性
符号链接:
符号链接的功能等价于Windows操作系统中的快捷方式。
符号链接可以支持文件和目录进行链接。
符号链接可以跨文件系统进行链接。
硬链接:
硬链接与原文件指向同一inode节点,不存在等级之分。
硬链接的功能等价复制但有区别与复制。
文件路径过长时便于文件等访问。
防止重要的文件误删除。
硬链接不能夸文件系统创建。
目录不能创建硬链接。

2.4 符号链接注意事项
文件或目录做符号链接时一定要注意使用绝对路径,否则可能导致找不到或找错文件。
[root@test ~]# mkdir /dir4000
[root@test ~]# mkdir /dir5000
[root@test ~]# mkdir /dir6000
[root@test ~]# touch /dir4000/file004
[root@test ~]# echo 'file004' >/dir4000/file004
[root@test ~]# touch /dir5000/file004
[root@test ~]# echo '/dir5000/file004' >/dir5000/file004
[root@test ~]# cd /dir4000/
[root@test dir4000]# ln -s file004 /dir5000/file004_link
[root@test dir4000]# ln -s file004 /dir6000/file004_link
[root@test dir4000]# cd
[root@test ~]# cat /dir4000/file004
file004
[root@test ~]# cat /dir5000/file004_link
/dir5000/file004
[root@test ~]# cat /dir6000/file004_link
cat: /dir6000/file004_link: No such file or directory

目录做符号链接时删除时不要加最后的斜杠,否则删除的将时目录下的内容。
[root@test ~]# mkdir /dir100
[root@test ~]# mkdir /dir200
[root@test ~]# touch /dir100/file100
[root@test ~]# touch /dir200/file200
[root@test ~]# ln -s /dir100/ /dir300
[root@test ~]# ln -s /dir200/ /dir400
[root@test ~]# rm -rf /dir300/ //删除的是目录下的内容
[root@test ~]# ll /dir100/
total 0
[root@test ~]# ll -d /dir300
lrwxrwxrwx 2 root root 4096 Apr 15 00:53 /dir100/ -> /dir300/
[root@test ~]# rm -rf /dir400 //删除的链接文件
[root@test ~]# ll /dir200/
-rw-r--r-- 1 root root 0 Apr 15 00:53 file200
[root@test ~]# ll /dir400
ls: cannot access /dir400: No such file or directory

猜你喜欢

转载自www.cnblogs.com/lv1572407/p/10708464.html