Linux 软硬链接特点与区别

ln [-sf] 源文件 目标文件
参数:
  -s:如果ln不加任何参数就进行连接,那么就是硬链接,-s就是符号连接
  -f:如果目标文件存在时,就主动将目标文件直接删除后再建立
 
硬链接或实际连接在某个目录下新增的一个文件的关联数据(无法做目录的连接)
    ---->硬链接文件其实就是真实目录的关联数据(硬链接与真实目录都指向同一个inode,但不会用掉inode与磁盘空间),从这两个
地方都可以正确无误的修改数据;删除其中的任何一个,另一个仍能读取到正确的元数据。

硬链接的限制:①不能跨文件系统②不能连接目录
 
符号连接(快捷方式):只是利用文件来作为指向的动作
    ---->当源文件被删除后,符号连接无法打开文件,会显示“无法打开某文件”,但是由于符号连接所建立的文件为一个独立的新文
件,会占用掉inode与块。
 
[root@localhost ln]# pwd  
/usr/ln  
[root@localhost ln]# ll  
总计 0  
 
# 测试1:
# 分别建立源文件(skyex)、硬链接(sHLink)、软链接(sSLink)
[root@localhost ln]# touch skyex  
[root@localhost ln]# ln skyex sHLink  
[root@localhost ln]# ln -s skyex sSLink  
[root@localhost ln]# ll  
总计 0  
-rw-r--r-- 2 root root 0 03-31 16:56 sHLink  
-rw-r--r-- 2 root root 0 03-31 16:56 skyex  
lrwxrwxrwx 1 root root 5 03-31 16:56 sSLink -> skyex
 
# 测试2:
# 硬链接不允许链接目录和文件系统
# 软链接可以链接目录和文件系统
[root@localhost ln]# ln /usr/ln /tmp  
ln: "/usr/ln" : 不允许将硬链接指向目录  
[root@localhost ln]# ln -s /usr/ln /tmp  
[root@localhost ln]# ll /tmp |grep ln  
lrwxrwxrwx 1 root   root      7 03-31 16:58 ln -> /usr/ln  
 
# 测试3:
# 源文件、软链接、硬链接更改任意一个文件的内容,其他的文件内容同时改变
# ①更改源文件的内容
[root@localhost ln]# cat>skyex<<eof  
> this is main  
> eof  
[root@localhost ln]# cat sHLink sSLink  
this is main  
this is main  
# ②更改硬链接的内容
[root@localhost ln]# cat>sHLink<<eof  
> this is sHLink  
> eof  
[root@localhost ln]# cat skyex sSLink  
this is sHLink  
this is sHLink  
# ③更改软链接的内容
[root@localhost ln]# cat>sSLink<<eof  
> this is sSLink  
> eof  
[root@localhost ln]# cat skyex sSLink  
this is sSLink  
this is sSLink  
 
# 测试4:
# 删除软硬链接,对源文件没有影响
[root@localhost ln]# rm -rf sHLink sSLink  
[root@localhost ln]# cat skyex  
this is sSLink  
# --->重建
[root@localhost ln]# ln skyex sHLink  
[root@localhost ln]# ln -s skyex sSLink  
[root@localhost ln]# ll  
总计 8  
-rw-r--r-- 2 root root 15 03-31 17:01 sHLink  
-rw-r--r-- 2 root root 15 03-31 17:01 skyex  
lrwxrwxrwx 1 root root  5 03-31 17:03 sSLink -> skyex  
 
# 测试5:
# 删除源文件,硬链接可以正常读取数据;软链接无法正常读取数据
[root@localhost ln]# rm -f skyex  
[root@localhost ln]# ll
总计 4
-rw-r--r-- 1 root root 15 03-31 17:01 sHLink
lrwxrwxrwx 1 root root  5 03-31 17:03 sSLink -> skyex
[root@localhost ln]# cat sHLink  
this is sSLink  
[root@localhost ln]# cat sSLink  
cat: sSLink: 没有那个文件或目录   
[root@localhost ln]# ll
总计 4
-rw-r--r-- 1 root root 15 03-31 17:01 sHLink
lrwxrwxrwx 1 root root  5 03-31 17:03 sSLink -> skyex
posted @ 2013-08-13 00:02  木子吾雨  阅读(778)  评论(0)    收藏  举报