linux的链接方式

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.txt
ln: /etc/: hard link not allowed for directory

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

[root@servera ~]# ln hard.txt /mountpoint/a.txt
ln: failed to create hard link '/mountpoint/a.txt' => 'hard.txt': Invalid cross-device link
[root@servera ~]# df -Th
Filesystem     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 -li
total 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 -Th
Filesystem     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.软链接与硬链接的区别:

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

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

猜你喜欢

转载自blog.csdn.net/weixin_66078202/article/details/131410403