Linux系统中软链接与硬链接区别

概念:

硬链接(hard link):

A是B的硬链接(A和B都是文件名),则A的目录项中的inode节点号与B的目录项中的inode节点号相同,即一个inode节点对应两个不同的文件名,两个文件名指向同一个文件,A和B对文件系统来说是完全平等的。如果删除了其中一个,对另外一个没有影响。每增加一个文件名,inode节点上的链接数增加一,每删除一个对应的文件名,inode节点上的链接数减一,直到为0,inode节点和对应的数据块被回收。注:文件和文件名是不同的东西,rm A删除的只是A这个文件名,而A对应的数据块(文件)只有在inode节点链接数减少为0的时候才会被系统回收。

软链接(soft link):

A是B的软链接(A和B都是文件名),A的目录项中的inode节点号与B的目录项中的inode节点号不相同,A和B指向的是两个不同的inode,继而指向两块不同的数据块。但是A的数据块中存放的只是B的路径名(可以根据这个找到B的目录项)。A和B之间是“主从”关系,如果B被删除了,A仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。

硬链接与软连接特点对比

linux中硬链接的特点:

  • 具有相同inode节点号的多个文件互为硬链接文件;
  • 删除硬链接文件或者删除源文件任意之一,文件实体并未被删除;
  • 只有删除了源文件和所有对应的硬链接文件,文件实体才会被删除;
  • 硬链接文件是文件的另一个入口;
  • 可以通过给文件设置硬链接文件来防止重要文件被误删;
  • 可以通过ls -i看到Index;
  • 硬链接文件是普通文件,可以用rm删除;
  • 对于静态文件(没有进程正在调用),当硬链接数为0时文件就被删除。注意:如果有进程正在调用,则无法删除或者即使文件名被删除但空间不会释放。

linux中软链接的特点:

  • 软链接类似windows系统的快捷方式;
  • 软链接里面存放的是源文件的路径,指向源文件;
  • 删除源文件,软链接依然存在,但无法访问源文件内容;
  • 软链接失效时一般是白字红底闪烁;
  • 创建软链接命令 ln -s 源文件 软链接文件;
  • 软链接和源文件是不同的文件,文件类型也不同,inode号也不同;
  • 软链接的文件类型是“l”,可以用rm删除。
硬连接与软连接实例演示

硬链接实例

首先创建名字为test1的文件,内容为1234567890,如下:

[root@localhost test]# more test1 
1234567890
[root@localhost test]#

创建硬连接命令格式:

ln 源文件 链接名

创建1个硬链接名字为test2

[root@localhost test]# ln test1 test2

使用ls -l命令查看这2个文件可以看到大小权限是完全一样的

[root@localhost test]# ls -l
total 8
-rw-r--r-- 2 root root 11 Jul  2 10:24 test1
-rw-r--r-- 2 root root 11 Jul  2 10:24 test2

内容也完全一样

[root@localhost test]# more test1
1234567890
[root@localhost test]# more test2
1234567890

给test1增加一行123(test2不做修改),再次查看test1和test2里面的内容,发现test2也多了一行

[root@localhost test]# more test1
1234567890
123
[root@localhost test]# more test2
1234567890
123

这次再给test2增加一行tomato(test1不做修改),再次查看test1和test2里面的内容,发现test1也多了一行

[root@localhost test]# more test2
1234567890
123
tomato
[root@localhost test]# more test1
1234567890
123
tomato

可以证明硬链接是文件名不同,但是是同一个文件,使用ls -il查看index

[root@localhost test]# ls -il
total 8
102532464 -rw-r--r-- 2 root root 22 Jul  2 10:38 test1
102532464 -rw-r--r-- 2 root root 22 Jul  2 10:38 test2
[root@localhost test]#

102532464这个数字就是index,权限后面的2就是硬链接的个数,当你再次增加一个硬链接test3时,权限后面的2就会变成3,如下

[root@localhost test]# ln test1 test3
[root@localhost test]# ls -il
total 12
102532464 -rw-r--r-- 3 root root 22 Jul  2 10:38 test1
102532464 -rw-r--r-- 3 root root 22 Jul  2 10:38 test2
102532464 -rw-r--r-- 3 root root 22 Jul  2 10:38 test3
[root@localhost test]#

如果你使用命令删除test3则会减1,硬链接个数变为2,注意:你删除的仅仅是个文件名,文件还在,当硬链接个数为0时,文件就会被删除,只要有1个硬链接个数,文件就不会被删除。

删除硬链接

删除硬链接跟普通删除一个文件一样,直接使用rm 文件名 即可

[root@localhost test]# rm test3

软链接实例

软链接就比较简单了,在windows中叫快捷方式,在linux中叫软链接。

创建软连接命令格式

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

例如:

当前路径创建test 引向/var/www/test 文件夹

ln –s  /var/www/test  test

创建/var/test 引向/var/www/test 文件夹

ln –s  /var/www/test  /var/test

删除软链接

和删除普通的文件是一眼的,删除都是使用rm来进行操作

rm –rf 软链接名称(请注意不要在后面加”/”,rm –rf 后面加不加”/” 的区别,可自行去百度下啊)

例如:

删除test

rm –rf test

修改软链接

ln –snf  新的源文件或目录  目标文件或目录

这将会修改原有的链接地址为新的地址

例如:

创建一个软链接

ln –s  /var/www/test   /var/test

修改指向的新路径

ln –snf  /var/www/test1   /var/test

 

 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

未经允许不得转载:番茄网 » Linux系统中软链接与硬链接区别

分享到: 生成海报

评论 抢沙发

  • QQ号
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

像番茄一样 表里如一

表里如一表里如一
切换注册

登录

忘记密码 ?

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活