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.软链接与硬链接的区别:
硬链接只能作用于常规文件 软链接可以作用于常规文件、特殊文件、目录
硬链接不能跨越文件系统 软链接可以跨越文件系统