【Linux学习笔记】5:链接命令ln

把原文件生成一个链接的目标文件,分为软连接和硬链接。

硬链接

具有相同的i节点和存储block块。(当用户去搜索一个文件时,会先去查文件索引表,找到存储位置,然后再去硬盘里这些位置的block块拿出数据块返回给用户。)硬链接的文件具有相同的i节点号,那么在文件索引表中找到的就是同一行,记录的存储位置也必然是一样的,取出的数据自然也相同。所以硬链接的文件可以视为同一个文件。
硬链接相当于一个文件的两个不同接入点,删掉了一个文件,也可以通过与之硬链接的另一个文件(实际上是同一个文件,只是名字不同)来访问信息。
不能跨分区,不能针对目录设置硬链接。
硬链接过于隐蔽(只能通过i节点号分辨),而且有很多限制,容易出错,不推荐使用。
【Linux学习笔记】5:链接命令ln_第1张图片

软链接

类似于windows中的快捷方式。软链接有自己的i节点和blcok块,但block块中只保存原文件的文件名和i节点号,并没有实际的文件数据(相当于指向文件索引表中的原文件那一行)。
软链接文件的十位文件权限码一定是lrwxrwxrwx,其中第一位是”l”表示是软链接文件。实际上软链接的权限要被原文件来限制。
由于修改是针对文件存储的那些信息而言的,所以修改任意文件(即从任一接入点访问文件信息资源),另一个都改变(因为找到的还是这块资源)。但由于软链接先要找到文件索引表中的原文件,再以此去找存储位置,所以删除原文件,软链接文件是不可用的。
【Linux学习笔记】5:链接命令ln_第2张图片

ln链接命令

(词汇:link)

ln [-s] [原文件] [目标文件]

选项:-s创建软链接。

*创建硬链接

[root@bogon ~]# ln /root/anaconda-ks.cfg /tmp/lzh.hard
[root@bogon ~]# ll
总用量 44
-rw-------. 2 root root  1392 822 18:22 anaconda-ks.cfg
-rw-r--r--. 1 root root 27016 822 18:22 install.log
-rw-r--r--. 1 root root  7572 822 18:20 install.log.syslog
[root@bogon ~]# ll /tmp/
总用量 4
-rw-------. 2 root root 1392 822 18:22 lzh.hard
-rw-------. 1 root root    0 822 18:12 yum.log

可以看到它(们)的引用次数变成了2,属性都是一样的,如果修改了一个文件中的数据,另一个也会改变。

*查看i节点号以分辨是否是硬链接

[root@bogon ~]# ls -i /root/anaconda-ks.cfg /tmp/lzh.hard 
528194 /root/anaconda-ks.cfg  528194 /tmp/lzh.hard

可以看到它们的i节点号一样,是硬链接。

*创建并修改软链接内容去看原文件

[root@bogon ~]# touch /tmp/sb1
[root@bogon ~]# ln -s /tmp/sb1 /tmp/sb2.soft
[root@bogon ~]# ll /tmp/
总用量 0
-rw-r--r--. 1 root root 0 824 09:04 sb1
lrwxrwxrwx. 1 root root 8 824 09:05 sb2.soft -> /tmp/sb1
-rw-------. 1 root root 0 822 18:12 yum.log
[root@bogon ~]# echo 1234 >> /tmp/sb2.soft 
[root@bogon ~]# cat /tmp/sb1
1234

软链接正常时高亮效果是这样的。
【Linux学习笔记】5:链接命令ln_第3张图片

*删除原文件再去看软链接

[root@bogon ~]# rm /tmp/sb1
rm:是否删除普通文件 "/tmp/sb1"?y
[root@bogon ~]# ll /tmp/
总用量 0
lrwxrwxrwx. 1 root root 8 824 09:05 sb2.soft -> /tmp/sb1
-rw-------. 1 root root 0 822 18:12 yum.log

代码上看不出来,实际上高亮效果会变成闪烁报错的,如下。
这里写图片描述

[root@bogon ~]# cat /tmp/sb2.soft 
cat: /tmp/sb2.soft: 没有那个文件或目录

注意:如果要建立软链接,两个路径都应写成绝对路径。如果原文件不写成绝对路径,那么原文件和目标文件必须在同一目录下,否则就会出错。

你可能感兴趣的:(Linux,linux,软链接,硬链接,ln命令)