1、如何创建链接文件?
命令 : ln
用法:ln [选项] 原文件 目标文件
-s : 创建软链接,
-v : 显示创建过程
例1:创建软链接
# ln -sv /root/test/config.ini /tmp/test/config.link
例2 :创建硬链接
# ln /root/test/config.ini /tmp/test/config.link2
注 : 默认不加 任何选项表示创建硬链接。
2、软硬链接的区别
1)先看我们刚才创建的软连接,软链接类似windows上的快捷方式
[root@bogon test]# ls -li /root/test/config.ini /tmp/test/config.link 1848989 -rw-r--r--. 1 root root 19 Jul 18 21:16 /root/test/config.ini 2359298 lrwxrwxrwx. 1 root root 21 Jul 18 21:17 /tmp/test/config.link -> /root/test/config.ini
通过这里我们看出 这两个文件的inode号是不同的,而 /tmp/test/config.link 的文件大小是21个字符,刚好是/root/test/config.ini的字符个数,也就是说/tmp/test/config.link 存的内容是/root/test/config.ini这个路径,这种就是软链接。
2)再看硬链接
[root@bogon test]# ls -li /root/test/config.ini /tmp/test/config.link2 1848989 -rw-r--r--. 2 root root 19 Jul 18 21:16 /root/test/config.ini 1848989 -rw-r--r--. 2 root root 19 Jul 18 21:16 /tmp/test/config.link2
通过这里我们看出这俩文件的inode号都是1848989,文件大小也是一样,都是19个字节,同时发现这个文件的被链接次数是2(上面用红色加粗字体),这里其实在文件系统中,这俩个文件的inode号都指向了同一个,
此时,我把 /root/test/config.ini 这个原文件删除
# rm -f /root/test/config.ini
然后看下链接文件还在不在?
[root@bogon test]# ls -li /tmp/test/config.link2 1848989 -rw-r--r--. 1 root root 19 Jul 18 21:16 /tmp/test/config.link2
这里可以理解为语言中的引用,
例如php中
<?php $a = 'test';//声明变量$a $b = & $a; //变量$b引用变量$a unset($a); //删除变量$a echo $b;//此时输出 test
unset($b);//删除$b变量,此时这个内容为'test'字符的在内存中就会消失了 ?>
3、为什么需要软链接和硬链接?
软链接在windows中相当于快捷方式,在linux中其实也是,例如我把mysql安装在了 /usr/local/mysql/ 目录下,此时我并没有把这个路径加入环境变量,若是想直接使用类似 mysql -u root -p123456 这个命令的话,我可以把mysql的执行程序创建一个软连接到/bin/mysql ,而没必要复制一个二进制程序到/bin/mysql,因此这就是软连接的好处
硬链接功能类似软连接,但和软连接的区别是,若是把软链接的原文件删除掉了,那么软链接再也打不开了,因为软链接存的就是原文件的路径,路径不在了,也就打不开了,而硬链接引用的是inode号,因此你删除其中任何一个都没有关系,都不会影响其余的硬链接文件,上面的例子也演示了。
4、创建硬链接的注意点
1)、不允许给目录创建硬链接
2)、只能在同一个文件系统中才能创建硬链接