博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
硬链接与软链接简单说明
阅读量:6586 次
发布时间:2019-06-24

本文共 3569 字,大约阅读时间需要 11 分钟。

  • 创建链接文件:

1
2
3
ln target link_name 
//创建硬链接文件 
ln -s target link_name 
//创建软链接文件
关键字:链接、文件

为了后面描述方便,我将原始文件称为目标文件,将新创建的文件称为链接文件

  • 硬链接

特点1:

硬链接文件与目标文件指向的都是同一个文件,只是文件名称不一样

1
2
3
4
[root@CentOS7 app]
#ln f1 f1_link //我们为目标文件f1创建一个硬链接文件f1_link
[root@CentOS7 app]
#ll -i //这两个文件的inode号都是67,说明是一个文件,对应的名字不同而已
67 -rw-r--r--. 2 root root 7 Jul 20 09:29 f1
67 -rw-r--r--. 2 root root 7 Jul 20 09:29 f1_link 
//我们把f1或者f1_link删除其中任一个,此文件依然能够被访问。不同硬链接文件之间没有依赖关系

特点2:

创建硬链接文件,其元数据的链接数会增加

1
2
3
4
5
[root@CentOS7 app]
#ll -i
67 -rw-r--r--. 1 root root 7 Jul 20 09:29 f1     
//未创建硬链接时,f1的链接数是1
[root@CentOS7 app]
#ll -i                             //创建完硬链接后,链接数为2
67 -rw-r--r--. 2 root root 7 Jul 20 09:29 f1
67 -rw-r--r--. 2 root root 7 Jul 20 09:29 f1_link

扩展:

文件的默认链接数都是1,但是目录的链接数默认都是2。这是为什么?

1
2
3
4
[root@CentOS7 app]
#ll -id dir1/     //在app目录下创建目录dir1,其链接数为2,就是说有两个名字指向了同一个目录文件dir1
67160800 drwxr-xr-x. 2 root root 6 Jul 20 09:41 dir1/     
//第一个名字就是app目录下的dir1自身
[root@CentOS7 dir1]
#ll -ai
067160800 drwxr-xr-x. 2 root root 6 Jul 20 09:41 .     
//第二个名字就是,进入dir1目录,其中的 .目录

特点3:

不能针对目录创建硬链接

1
2
[root@CentOS7 app]
#ln dir1 f2
ln: ‘dir1’: hard link not allowed 
for 
directory    
//硬链接不允许对目录创建

特点4:

不能跨分区创建硬链接

1
2
[root@CentOS7 app]
#ln f1 /root/f2_link
ln: failed to create hard link ‘/root/f2_link’ => ‘f1’: Invalid cross-device link     
//app目录与/root在不同分区,不能跨分区创建硬链接

特点5:

硬链接文件与目标文件的文件类型是一样的,因为他们指向的是同一份文件,这份文件的元数据以及内容都是唯一且固定的

1
2
3
4
5
6
[root@CentOS7 app]
#ll -i
67 -rw-r--r--. 2 root root 7 Jul 20 09:29 f1
67 -rw-r--r--. 2 root root 7 Jul 20 09:29 f1_link           
//目标文件与链接文件的类型都是普通文件
[root@CentOS7 app]
#ll  -i /dev/zero /dev/zero_link 
1030 crw-rw-rw-. 2 root root 1, 5 Jul 20 07:30 /dev/zero
1030 crw-rw-rw-. 2 root root 1, 5 Jul 20 07:30 /dev/zero_link      
//目标文件与链接文件都是字符文件类型

扩展:

在app下有个dir1目录,其绝对路径是/app/dir1,现在我们在dir1目录下创建硬链接文件f3_link,使其指向/app下的f1文件,要求使用相对路径

1
2
3
4
5
6
[root@CentOS7 dir1]
#pwd
/app/dir1                                        
//当前路径在dir1下
[root@CentOS7 dir1]
#ln ../f1 f3_link             //相对路径../f1,其中..表示dir1的父目录也就是/app
[root@CentOS7 dir1]
#ll -i /app/f1 f3_link        //创建成功
67 -rw-r--r--. 3 root root 7 Jul 20 09:29 /app/f1
67 -rw-r--r--. 3 root root 7 Jul 20 09:29 f3_link

  • 软链接

特点1:

软链接文件和目标文件不是同一个文件,他们有各自的元数据

1
2
3
4
[root@CentOS7 app]
#ln -s f1 f4_link
[root@CentOS7 app]
#ll -i f1 f4_link          //f1是目标文件,f4_link是软链接文件,二者的inode号都不一样,他们是两个不同文件
67 -rw-r--r--. 3 root root 7 Jul 20 09:29 f1
68 lrwxrwxrwx. 1 root root 2 Jul 20 10:13 f4_link -> f1

特点2:

创建软链接文件,其元数据的链接数是1,不会改变

1
2
3
4
5
6
[root@CentOS7 app]
#ln -s f1 f4_link
[root@CentOS7 app]
#ll
drwxr-xr-x. 2 root root 21 Jul 20 10:07 dir1
-rw-r--r--. 3 root root  7 Jul 20 09:29 f1
-rw-r--r--. 3 root root  7 Jul 20 09:29 f1_link
lrwxrwxrwx. 1 root root  2 Jul 20 10:13 f4_link -> f1        
//链接数为1

特点3:

软链接文件与目标文件的类型不一样,软链接文件类型是l

1
2
3
4
5
[root@CentOS7 app]
#ll
drwxr-xr-x. 2 root root 21 Jul 20 10:07 dir1
-rw-r--r--. 3 root root  7 Jul 20 09:29 f1
-rw-r--r--. 3 root root  7 Jul 20 09:29 f1_link
lrwxrwxrwx. 1 root root  2 Jul 20 10:13 f4_link -> f1

特点4:

软链接可以针对目录创建

1
2
3
4
5
6
7
[root@CentOS7 app]#ln -s dir1 f5_link
[root@CentOS7 app]#ll
drwxr-xr-x. 
2 
root root 
21 
Jul 
20 
10
:
07 
dir1
-rw-r--r--. 
3 
root root  
7 
Jul 
20 
09
:
29 
f1
-rw-r--r--. 
3 
root root  
7 
Jul 
20 
09
:
29 
f1_link
lrwxrwxrwx. 
1 
root root  
2 
Jul 
20 
10
:
13 
f4_link -> f1
lrwxrwxrwx. 
1 
root root  
4 
Jul 
20 
10
:
22 
f5_link -> dir1     
//dir1是目录,f5_link软链接指向dir1

特点5:

软链接可以跨分区创建

1240

可以跨分区创建软链接,但是链接的文件亮红说明有问题,下面说明

特点6:

上述的示例中出现软链接标红,是因为路径的问题。

以上述为例,在软链接中,目标文件的路径是相对于链接文件的目录的,而不是相对于本目录的。也就是说,dir1是目标文件,/root/f6_link是软链接文件,

要想使链接生效,dir1的路径需要修改为 ../app/f1

1240

软链接一般都会使用相对路径,只要我们知道以下几点就会慢慢理解的:

目标文件是谁

软链接文件是谁

目标文件相对于软链接文件的路径

本文转自  a_pan  51CTO博客,原文链接:http://blog.51cto.com/panpangao/1949200

转载地址:http://etano.baihongyu.com/

你可能感兴趣的文章
jQ插件--时间线插件和拖拽API
查看>>
python第三方库系列之十九--python測试使用的mock库
查看>>
浏览器渲染模式设置
查看>>
atitit.userService 用户系统设计 v4 q316 .doc
查看>>
html中offsetTop、clientTop、scrollTop、offsetTop各属性
查看>>
HDU 5715 XOR 游戏 二分+字典树
查看>>
使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(四)-- Middleware
查看>>
[C#] 走进异步编程的世界 - 在 GUI 中执行异步操作
查看>>
Atitit html5 Canvas 如何自适应屏幕大小
查看>>
Javascript的setTimeOut()和setInterval()的定时器用法
查看>>
request.getSession()几种获取情况之间的差异
查看>>
PayPal加密证书.pem的生成
查看>>
Unity官方发布热更新方案性能对照
查看>>
序列化与反序列化
查看>>
正态分布及标准化
查看>>
既使用maven编译,又使用lib下的Jar包
查看>>
【转】浅谈php://filter的妙用
查看>>
leetcode344 反转字符串 c++实现
查看>>
【转】网络字节序与主机字节序
查看>>
理解数据结构
查看>>