本文共 3291 字,大约阅读时间需要 10 分钟。
Linux链接分两种:
一种被称为硬链接(Hard Link),
另一种被称为符号链接(Symbolic Link)。
默认情况下,ln命令创建硬链接, ln -s 创建软连接
硬连接指通过索引节点来进行连接。
在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。
多个文件名指向同一索引节点是存在的,一般这种连接就是硬连接。
硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。因为只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接都被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
ln命令
语法格式:
ln 源文件 目标文件(目标文件可以不存在,在创建链接时候会默认创建同名的文件)
示例:
[root@anuo ~]# mkdir anuo[root@anuo ~]# ln anuo/ /tmp/ln: "/tmp/": 不允许将硬链接指向目录[root@anuo ~]# touch anuo.txt[root@anuo ~]# ln anuo.txt /tmp/ --创建链接到/tmp/目录下[root@anuo ~]# ll-rw-r--r-- 2 root root 0 5月 13 17:54 anuo.txt[root@anuo ~]# ll /tmp/-rw-r--r-- 1 root root 12 5月 13 17:57 anuo.txt[root@anuo ~]# cat /tmp/anuo.txt [root@anuo ~]# echo "123456" >> /tmp/anuo.txt --往链接文件里追加内容[root@anuo ~]# cat anuo.txt --查看源文件也增加了一样的内容123456[root@anuo ~]# echo "abcd" >> anuo.txt --给源文件追加内容[root@anuo ~]# cat /tmp/anuo.txt --链接文件也一样增加相同的内容123456abcd[root@anuo ~]# \rm anuo.txt -f --删除源文件[root@anuo ~]# cat /tmp/anuo.txt --链接文件不变123456abcd
小结:
优点:硬链接相当于给文件做了备份,而且还是实时的互相备份,源文件变化链接文件也变化,源文件被删除,也不影响链接文件的正常使用
缺点:硬链接 无法针对目录,跨分区无法实现
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
创建软连接
语法: ln -s 源文件 目标文件
示例:
目录测试:
[root@anuo ~]# mkdir anuo[root@anuo ~]# ln -s anuo/ abc[root@anuo ~]# ll总用量 4lrwxrwxrwx 1 root root 5 5月 13 19:39 abc -> anuo/drwxr-xr-x 2 root root 4096 5月 13 19:36 anuo[root@anuo ~]# touch anuo/{a..c}.txt --在源目录创建文件[root@anuo ~]# cd abc/ --链接目录下也会有[root@anuo abc]# lsa.txt b.txt c.txt[root@anuo ~]# touch abc/{1..5}.txt --在链接目录里创建文件[root@anuo ~]# ll abc/总用量 0-rw-r--r-- 1 root root 0 5月 13 19:42 1.txt-rw-r--r-- 1 root root 0 5月 13 19:42 2.txt……[root@anuo ~]# ll anuo/ --查看到源目录里也有了总用量 0-rw-r--r-- 1 root root 0 5月 13 19:42 1.txt-rw-r--r-- 1 root root 0 5月 13 19:42 2.txt……[root@anuo ~]# \rm anuo/ -rf --删除源目录[root@anuo ~]# cd abc -bash: cd: abc: 没有那个文件或目录[root@anuo ~]# ll --可以看到链接目录还在,但失效了总用量 0lrwxrwxrwx 1 root root 5 5月 13 19:39 abc -> anuo/
文件测试:
[root@anuo ~]# touch anuo.txt[root@anuo ~]# ln -s anuo.txt abc.txt[root@anuo ~]# ll总用量 4lrwxrwxrwx 1 root root 5 5月 13 19:51 abc -> anuo/lrwxrwxrwx 1 root root 8 5月 13 19:55 abc.txt -> anuo.txtdrwxr-xr-x 2 root root 4096 5月 13 19:51 anuo-rw-r--r-- 1 root root 0 5月 13 19:55 anuo.txt[root@anuo ~]# echo "123456" >>anuo.txt [root@anuo ~]# cat abc.txt 123456[root@anuo ~]# echo "abcd123" >>abc.txt [root@anuo ~]# cat anuo.txt 123456abcd123[root@anuo ~]# \rm abc.txt --删除链接文件[root@anuo ~]# ll总用量 8lrwxrwxrwx 1 root root 5 5月 13 19:51 abc -> anuo/drwxr-xr-x 2 root root 4096 5月 13 19:51 anuo-rw-r--r-- 1 root root 15 5月 13 19:56 anuo.txt[root@anuo ~]# cat anuo.txt --源文件还存在没有影响123456abcd123[root@anuo ~]# ln -s anuo.txt abc.txt --再创建链接[root@anuo ~]# cat abc.txt 123456abcd123[root@anuo ~]# \rm anuo.txt --删除源文件[root@anuo ~]# ll总用量 4lrwxrwxrwx 1 root root 5 5月 13 19:51 abc -> anuo/lrwxrwxrwx 1 root root 8 5月 13 20:01 abc.txt -> anuo.txtdrwxr-xr-x 2 root root 4096 5月 13 19:51 anuo[root@anuo ~]# cat abc.txt --链接文件也失效了cat: abc.txt: 没有那个文件或目录
源文件被删除,链接文件失效
能针对目录创建
能跨分区创建
软链接:相当于windows中的快捷方式
转载于:https://blog.51cto.com/13744837/2115763