ln [选项] 源文件 目标文件 选项: -s:建立软链接文件。如果不加'-s',则建立硬链接文件 -f:强制。如果目标文件已经存在,则删除目标文件后再建立链接文件
如:touch ying ln /home/ying /tmp/ #建立硬链接文件,目标文件没有写文件名,会和原名一直 #也就是/home/ying 和/tmp/ying 是硬链接文件
touch ruan ln -s /home/ruan /tmp/ #建立软链接
[root@VM-0-17-centos home]# touch test #建立源文件 [root@VM-0-17-centos home]# ln /home/test /tmp/test-lianjie #给源文件建立硬链接文件/tmp/test-lianjie [root@VM-0-17-centos home]# ll -i /home/test /tmp/test-lianjie 393820 -rw-r--r-- 2 root root 0 6月 2 19:13 /home/test 393820 -rw-r--r-- 2 root root 0 6月 2 19:13 /tmp/test-lianjie #查看两个文件的详细信息,可以发现这连个文件的inode号是一样的
删除其中任意一个,另一个仍能正常读取
[root@VM-0-17-centos home]# touch check #建立源文件 [root@VM-0-17-centos home]# ln -s /home/check /tmp/check-soft #建立软链接文件 [root@VM-0-17-centos home]# ll -i /home/check /tmp/check-soft 393829 -rw-r--r-- 1 root root 0 6月 2 19:44 /home/check 23947 lrwxrwxrwx 1 root root 11 6月 2 19:44 /tmp/check-soft -> /home/check #软链接和源文件的inode号不一致,软链接通过->明显的标识出源文件的位置 #在软链接的权限中lrwxrwxrwx,l就代表软链接文件 #必须使用绝对路径
软链接也不像硬链接的限制那样多,比如软链接可以链接目录,也可以跨分区来建立软链接,类似Windows的快捷方式,比如,有些系统的自启动文件/etc/rc.local放置在/etc/目录中,而有些系统却将其放置在/etc/rc.d/rc.local中,那么干脆对这两个文件建立软链接,不论你习惯操作哪一个文件,结果都是一样的
软链接和硬链接在原理上最主要的不同在于:硬链接不会建立自己的inode索引和block (数据块),而是直接指向源文件的inode信息和block,所以硬链接和源文件的inode号是一致的;而软链接会真正建立自己的inode索引和block,所以软链接和源文件的inode号是不一致的,而且在软链接的block中,写的不是真正的数据,而仅仅是源文件的文件名及inode号。
软链接的特点:
- 不论是修改源文件(check),还是修改硬链接文件(check-soft),另一个文件中的数据都会发生改变。
- 删除软链接文件,源文件不受影响。而删除源文件,软链接文件将找不到实际的数据,从而显示文件不存在
- 软链接会新建自己的inode信息和block,只是在block中不存储实际文件数据,而存储的是源文件的文件名及inode号
- 软链接可以链接目录
- 软链接可以跨分区
[root@VM-0-17-centos home]# rm -rf /home/check #删除源文件 [root@VM-0-17-centos home]# cat /tmp/check-soft cat: /tmp/check-soft: 没有那个文件或目录 #软链接无法正常使用