关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

linux的硬链接和软链接

发布时间:2023-06-27 11:00:39

linux的硬链接和软链接

1.链接的概念:

Linux链接分两种:一种被称为硬链接(Hard Link),另一种被称为软链接也叫符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。

2.硬链接:

在Linux文件系统当中,保存在磁盘中的文件不管是什么类型都会有一个值叫做inode值(索引节点编号),硬链接允许多个文件的inode值相同,一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要文件,以防止“误删”。因为有多个文件指向同一文件,只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,硬链接才彻底消失。

3.硬链接实验:

[root@servera]# touch a1.txt #创建一个测试文件[root@servera]# ln a1.txt hard.txt #创建a1的一个硬链接文件hard.txt[root@servera]# ls-li #-i参数显示文件的inode值total 24
4318232 -rw-------. 1 root root 6947 Apr  4  2019 anaconda-ks.cfg
4318268 -rw-r--r--. 2 root root    7 Jun 26 20:06 a.txt
4318268 -rw-r--r--. 2 root root    7 Jun 26 20:06 hard.txt
4318231 -rw-------. 1 root root 6750 Apr  4  2019 original-ks.cfg

从上面的结果可以看出,硬链接文件hard与原文件a1的inode值相等,均为4318268

[root@servera]# echo "sannet" > a1.txt #向a1写入内容为sannet[root@servera ~]# cat a1.txt #查看a1文件的内容sannet[root@servera ~]# cat hard.txt #查看硬链接hard文件的内容发现是一样的sannet[root@servera ~]# rm -f a1.txt #将原文件删除[root@servera ~]# cat hard.txt #查看硬链接文件内容是否存在-->发现存在sannet

通过上面的测试可以看出:当删除原文件a1后,硬链接不受影响

硬链接的局限性:

1.硬链接只能用于常规文件

2.不能创建目录或特殊文件的硬链接

[root@servera ~]# ln /etc/ c.txtln: /etc/: hard link not allowed for directory

3.硬链接不能跨文件系统

[root@servera ~]# ln hard.txt /mountpoint/a.txtln: failed to create hard link '/mountpoint/a.txt' => 'hard.txt': Invalid cross-device link[root@servera ~]# df -ThFilesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  388M     0  388M   0% /dev
tmpfs          tmpfs     411M     0  411M   0% /dev/shm
tmpfs          tmpfs     411M   11M  400M   3% /run
tmpfs          tmpfs     411M     0  411M   0% /sys/fs/cgroup
/dev/vda1      xfs        10G  1.5G  8.6G  15% /
tmpfs          tmpfs      83M     0   83M   0% /run/user/0
/dev/vdb1      ext4      976M  2.6M  907M   1% /mountpoint

4.软链接:

也叫符号链接,有点类型Windows当中的快捷方式。它实际上是一个特殊的文件。在软链接当中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

5.软链接实验:

[root@servera ~]# touch soft.txt #创建原文件[root@servera ~]# vim soft.txt[root@servera ~]# ln -s soft.txt abc.txt #创建软链接[root@servera ~]# ll -li #查看inode值total 24
4427926 lrwxrwxrwx. 1 root root    8 Jun 27 00:46 abc.txt -> soft.txt
4318232 -rw-------. 1 root root 6947 Apr  4  2019 anaconda-ks.cfg
4318268 -rw-r--r--. 1 root root    7 Jun 26 12:06 hard.txt
4318231 -rw-------. 1 root root 6750 Apr  4  2019 original-ks.cfg
4195052 -rw-r--r--. 1 root root    7 Jun 27 00:45 soft.txt

从上面的结果可以看出,软链接文件abc.txt与原文件soft.txt的inode值不相等

这种情况下我们称之为“断链”。

断链:指向缺失文件的软链接

软链接的优点:

1.可以指向目录或特殊文件,而不仅限于常规文件

[root@servera ~]# ln -s /etc/ directory[root@servera ~]# ll -litotal 16
4318232 -rw-------. 1 root root 6947 Apr  4  2019 anaconda-ks.cfg
4427926 lrwxrwxrwx. 1 root root    5 Jun 27 09:09 directory -> /etc/
4318231 -rw-------. 1 root root 6750 Apr  4  2019 original-ks.cfg

2.可以跨越文件系统

[root@servera ~]# ln -s /abc/c.txt redhat.txt[root@servera ~]# df -ThFilesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  388M     0  388M   0% /dev
tmpfs          tmpfs     411M     0  411M   0% /dev/shm
tmpfs          tmpfs     411M   11M  400M   3% /run
tmpfs          tmpfs     411M     0  411M   0% /sys/fs/cgroup
/dev/vda1      xfs        10G  1.5G  8.5G  15% /
tmpfs          tmpfs      83M     0   83M   0% /run/user/0
/dev/vdb1      ext4      976M  2.6M  907M   1% /abc

6.软链接与硬链接的区别:

硬链接只能作用于常规文件 软链接可以作用于常规文件、特殊文件、目录

硬链接不能跨越文件系统 软链接可以跨越文件系统


/template/Home/leiyu/PC/Static