1.Linux链接概念
Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)或软链接。
硬链接
硬链接指通过索引节点来进行链接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,如果多个文件名指向同一索引节点一般这种链接就是硬链接。建立硬链接时,在另外的目录或本目录中增加目标文件的一个目录项,这样,一个文件就登记在多个目录中创建硬链接后,己经存在的文件的I节点号(Inode)会被多个目录文件项使用。一个文件的硬链接数可以在目录的长列表格式的第二列中看到,无额外链接的文件的链接数为l。 在默认情况下,ln命令创建硬链接。ln命令会增加链接数,rm命令会减少链接数。一个文件除非链接数为0,否则不会从文件系统中被物理地删除。
软链接
另外一种链接称之为符号链接(Symbolic Link),或软链接。软链接文件类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号链接中,文件实际上是一个文本文件,事实上,它只是一个文本文件,其中包含它提供链接的另一个文件的路径名另一个文件是实际包含所有数据的文件。所有读、写文件内容的命令被用于符号链接时,将沿着链接方向前进来访问实际的文件。
2. 语法和选项:
语法:ln选项参数:
常用选项:
-s建立软链接(符号链接)
-v执行过程可见
-f强行建立文件或目录的链接,不论文件或目录是否存在
注意:默认建立软链接
3. 具体使用实例
[root@centos7testdir]# ls //在测试目录下面建立a.txt和dir目录
a.txt dir
[root@centos7 testdir]# ln a.txt ./dir/a.ln //给a.txt在dir中建立硬链接
[root@centos7testdir]# ll ./dir/a.ln //查看硬链接
-rw-r--r--. 2 rootroot 15 Jul 29 21:47 ./dir/a.ln
[root@centos7testdir]# ll a.txt //此时查看到文件的链接数变成2,建立硬链接成功
-rw-r--r--. 2 rootroot 15 Jul 29 21:47 a.txt
[root@centos7testdir]# ls
a.txt dir
[root@centos7testdir]# rm ./dir/a.ln -f //删除硬链接,在dir下建立相对路径的软链接
[root@centos7testdir]# ln -s ../a.txt ./dir/a.sln
[root@centos7testdir]# ll ./dir/a.sln
lrwxrwxrwx. 1 rootroot 8 Jul 30 13:57 ./dir/a.sln -> ../a.txt
[root@centos7testdir]# mkdir dir2
[root@centos7testdir]# ln -s /testdir/a.txt /testdir/dir2/a.sln //建立绝对路径的软链接
[root@centos7testdir]# ll /testdir/dir2/a.sln
lrwxrwxrwx. 1 rootroot 14 Jul 30 13:59 /testdir/dir2/a.sln -> /testdir/a.txt
注释:上面的命令中相对路径的软链接可能不太好理解,在此解释一下,在给a.txt建立软链接时,是软链接经过怎样就找到文件,此时前面的文件就是软链接保存的路径,就是相对软链接而言,软链接的上一层就是文件,所以建立相对路径的软链接就是那样写,当然写绝对路径就不会出现这么绕,也不会出现任何问题。并且,软链接如果建立的不对,软链接将无法找到文件ls –l命令查看软链接时,软链接文件名将会出现闪烁,证明软链接无效,或者文件已经被移除
4.软硬链接的本质区别:
1.硬链接是在目录文件创建了iNode节点指针,文件的元数据和文件数据本身没有变化,删除文件需要把文件的所有硬链接都删除,文件才算删除
2.软链接本身是一个类似文本文件,自身存放指向文件的目录信息,所指向的文件一旦移除,软链接将失效。
3.硬链接只能针对本个分区有效,因为不同的分区有不同的iNode号分配,并且只能针对文件有效,使用的较少
4.软链接既可以针对文件,也可以针对目录,可以跨分区或文件系统建立,使用较多