链接有两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。建立硬链接时,链接文件和被链接文件必须位于同一个文件系统中,并且不能建立指向目录的硬链接。而对符号链接,则不存在这个问题。默认情况下,ln产生硬链接。
在硬链接的情况下,参数中的“目标”被链接至[链接名]。如果[链接名]是一个目录名,系统将在该目录之下建立一个或多个与“目标”同名的链接文件,链接文件和被链接文件的内容完全相同。如果[链接名]为一个文件,用户将被告知该文件已存在且不进行链接。如果指定了多个“目标”参数,那么最后一个参数必须为目录。
如果给ln命令加上- s选项,则建立符号链接。如果[链接名]已经存在但不是目录,将不做链接。[链接名]可以是任何一个文件名(可包含路径),也可以是一个目录,并且允许它与“目标”不在同一个文件系统中。如果[链接名]是一个已经存在的目录,系统将在该目录下建立一个或多个与“目标”同名的文件,此新建的文件实际上是指向原“目标”的符号链接文件。
硬链接:ln 源文件 目标文件
软连接:ln -s 源文件 目标文件(目标文件不能已经存在)
1. 硬链接(hard link) :
在Linux文件系统中,多个文件名指向同一个索引节点(inode)。这种情况文件就称为硬链接。硬链接文件就相当于文件的另外的一个入口。
例:
[root@centos ~]# ls -il ett.txt
39 -rw-r--r--. 1 root root 292 5月 10 19:58 ett.txt
[root@centos ~]# ln ett.txt a
[root@centos ~]# ls -hil ett.txt a
39 -rw-r--r--. 2 root root 292 5月 10 19:58 a
39 -rw-r--r--. 2 root root 292 5月 10 19:58 ett.txt
硬链接知识:
1. 具有相同inode节点号的多个文件是互为硬链接文件
2. 删除硬链接文件或者删除源文件任意之一,文件实体并未被删除
3. 只有删除了源文件及所有对应的硬链接文件,文件实体才会被删除
4. 当所有的硬链接文件及源文件呗删除后,再存放新的数据会占用这个文件的空间,或者磁盘fsck检查的时候,删除的数据也会被系统回收
5. 硬链接文件就是文件的另一个入口
6. 可以通过给文件设置硬链接文件,来防止重要文件被误删
7. 通过执行 ln 源文件 硬链接文件 即可创建硬链接文件
8. 硬链接文件是普通文件,所以可以用rm命令删除
9. 对应静态文件(没有进程正在调用的文件)来讲,当对应硬链接数为0(i_link),文件就被删除了。i_link的查看方法:ls -l 第三列的数字就是
硬链接的限制:
我们在使用硬链接的同时也需要对硬链接的限制有所了解;
1. 不能跨文件系统
2. 不能链接到目录
2.软链接(symbolic link):
软连接又叫做符号链接,它几乎可以等价于windows下的快捷方式;
[root@centos ~]# ls -li install.log b
121 lrwxrwxrwx 1 root root 11 5月 18 15:14 b -> install.log
13 -rw-r--r--. 1 root root 21712 5月 8 00:06 install.log
软连接的创建:
软连接:ln -s 源文件 目标文件(目标文件不能已经存在)
软连接知识:
1. 软连接类似window的快捷方式(可以通过readiink查看其指向)
2. 软连接类似一个文本文件,里面存放的是源文件的路径,指向源文件实体
3. 删除源文件,软连接文件依然存在,但是无法访问指向的源文件路径内容了
4. 失效的时候一般是白字红底闪烁提示
5. 执行命令“ln -s 源文件 软连接文件”,即可完成创建软连接(目标不能存在)
6. 软连接和源文件是不同类型的文件,也是不同的文件,inode号也不相同
7. 软连接文件的文件类型为(l),可以用rm命令删除
有关文件的整体总结:
1.删除软连接,对源文件和硬链接文件都没有印象
2.删除硬链接,对源文件和软连接文件都没有印象
3.删除源文件,对硬链接没有印象,但是会导致软连接文件失效,白底红字闪烁
4.同时删除源文件和硬链接文件,整个文件才会真正的被删除
5.源文件和硬链接文件具有相同的索引节点号,可以认为是同一个文件或一个文件多个入口
6.源文件和软连接文件的索引节点号不相同,是不同的文件,软连接文件相当于源文件的快捷方式,含有源文件的位置指向
有关目录的总结:
1. 对于目录,不可以创建硬链接,但可以创建软连接
2. 目录的硬链接不能跨越文件系统
3. 每个目录下面都有一个硬链接.号,和对应上级目录的硬链接..
4. 在父目录里面创建一个子目录,父目录的链接数会增加1(子目录里都有..来指向父目录)