linux下的连接文件——软连接和硬连接的区别

软连接可以理解为,源文件的快捷方式,软连接文件记录的是源文件的路径,占用空间非常小。当把源文件删除后,那么软连接文件也就变成一个坏文件了,不能使用了。


硬连接和源文件的inode信息是一模一样的,可以说硬链接文件只是复制了一份源文件的inode信息,在我们看来硬链接文件和源文件没有什么区别,删除任何一个文件对方都不受影响,唯一的是少了一份inode,硬链接只能在同一个分区下创建,而软连接不受限制。硬链接文件和源文件虽然看起来像是两个文件,但是只占用一个文件的磁盘空间。


软连接

 ln -s     源文件或目录    目标文件或目录

创建软连接最好加绝对路径

[ root@localhost ~]# ln -s /root/3.txt /tmp/21.txt  
[ root@localhost ~]# ls -l /tmp/21.txt  
lrwxrwxrwx. 1 root root 11 3月  20 06:14 /tmp/21.txt -> /root/3.txt


目录软连接,目标目录不制定的话,会自动创建一个源目录同名的目录;

[root@localhost ~]# ln -s /root/aa /tmp/
[ root@localhost ~]# ls -l /tmp/aa 
lrwxrwxrwx. 1 root root 8 3月  20 06:19 /tmp/aa -> /root/aa


pwd -P    显示物理路径,真正的路径

pwd -L    显示逻辑路径,软连接的路径,默认pwd显示的是逻辑路径;

[root@localhost~]# cd /tmp/aa/
[root@localhost aa]# pwd
/tmp/aa
[root@localhost aa]# pwd -P
/root/aa 
[root@localhost aa]# pwd -L 
/tmp/aa


硬连接   

ln 源文件 目标文件     

ln 不加s 就是创建硬连接

1、硬连接不可以作用于目录。因为每个目录下面都会有一个.和..也就是说每个目录下面的子目录肯定会有它本身和它上一级目录,那么一旦设置了硬链接则会造成一种混乱,设置会导致死循环。硬链接的文件并不会占用空间大小,它只是复制了该文件的一份inode信息。


2、硬连接不可以跨分区链接。 因为inode的生成是在分区格式化划分好的。一个分区的inode是各不相同的。每个分区都有inode.有相同的inode会引起文件的混乱。


[ root@localhost ~]# ln yong yong1 ln: "yong": 不允许将硬链接指向目录
[ root@localhost ~]#  ln 3.txt 4.txt
[ root@localhost ~]# ls -l 3.txt 4.txt  
-rw-r--r--. 2 root root 0 3月  20 06:08 3.txt 
-rw-r--r--. 2 root root 0 3月  20 06:08 4.txt 
[ root@localhost ~]# ls -li 3.txt 4.txt  130736 
-rw-r--r--. 2 root root 0 3月  20 06:08 3.txt 130736 
-rw-r--r--. 2 root root 0 3月  20 06:08 4.txt 
[ root@localhost ~]#  ln 3.txt /boot/4.txt
ln: 创建硬链接"/boot/4.txt" => "3.txt": 无效的跨设备连接

硬连接文件2个文件具有相同的inode值,可以随便删除其中的一个;




本文出自 “模范生的学习博客” 博客,请务必保留此出处http://8802265.blog.51cto.com/8792265/1622578

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。