Linux下具有为一个文件起多个名字的功能,称为链接。如果被链接的文件被存放在系统的目录下,则必须取不同的文件名,而不用再硬盘上为同样的数据重复备份;但如果被链接的文件是存放在不同的目录下,被链接的文件则可以使用相同的文件名,因此只要对一个目录下的文件进行修改,就会完成对所有目录下同名链接文件的修改。需要注意的一点就是,对于某个文件的各链接文件,可以给它们指定不同的存取权限,以控制对信息的共享和增加安全性。
文件链接分为两种:硬链接和符号链接。
1)硬链接:亦称为链接,在建立硬链接时,在别的目录或本目录中增加目标文件的一个目录项,则目标文件就记录在多个目录中了。创建硬链接后,已经存在的文件的Inode会被多个目录文件项使用。一个文件的硬链接数可以在目录的长列表格式的第二列中可以看到,无额外链接的文件的链接数为1.ln命令在默认的情况下,可以创建硬链接,同时增加了链接数,而rm命令则会减少链接数,文件除非链接数为0,否则不会从文件系统中被物理地删除。
Linux下对硬链接的限制:
1.不能对目录文件创建硬链接;
2.不能在不同的文件系统之间创建硬链接,即链接文件与链接文件必须存在同一个文件系统中。
2)符号链接:亦称为软链接,即将一个路径名链接到一个文件,这些文件是一种特别的文件,其实就是一个文本文件,文件里包含它所提供链接的另一个文件的路径名,另一个文件是实际包含所有数据的文件。所有读和写文件内容的命令被用于符号链接时,将沿着链接方向前进来访问实际的文件。
与硬链接的区别:
1.符号链接的确是一个新文件,拥有自己不同的Inode,但硬链接并没有建立新文件;
2.符号链接没有硬链接的限制,可以对目录文件建立符号链接,也可以在不同的文件系统之间建立符号链接。
使用ln -s来建立符号链接,在建立链接的时候,源文件最好使用绝对路径名,这样可以在任何目录下进行符号链接。如果源文件使用相对路径,在当前的工作路径与要创建的符号链接文件所在路径不同时,就无法进行链接。
符号链接保持了与源文件或目录之间的区别:
1.删除源文件或目录,只删除数据,不会删除链接。一旦以同样文件名创建源文件,链接将继续指向该文件的新数据;
2.在目录长列表中,符号链接以一种特殊的文件类型显示出来,其第一个字母是l;
3.符号链接的大小是其链接文件的路径名的字节数;
4.当用ls -l命令列出文件时,可以看到符号链接名后有一个箭头指向源文件或目录。
注意点:符号链接文件不是一个独立的文件,它的许多属性依赖于源文件,所以给符号链接文件设置存取权限是无意义的。
拓展:ln命令:链接的对象可以是文件或目录,如果链接指向目录,用户就可以利用该链接直接进入被链接的目录,而不需要给出到达该目录的一长串路径,同时即使删除这个链接,也不会破坏原来的目录,类似于Windows下的快捷方式。