Linux中的软硬链接
硬链接指向文件在硬盘中的位置;而软连接指向文件,文件则指向在硬盘中的位置。\
在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index) ;
硬链接
1
ln [源文件] [目标文件]
硬链接等于cp -p 加 同步更新。同一节点可以指向多个文件名;即一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件;删除其中任何一个都不会影响另外一个的访问。
软连接
1
ln -s [源文件] [目标文件]
类似于Windows快捷方式;指向的是两个不同的 inode,继而指向两块不同的数据块;之间是“主从”关系,如果源文件B 被删除了,则软连接A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。
例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[centos@wyw]$ touch f1 #创建一个测试文件f1
[centos@wyw]$ echo "I am f1 file" >>f1 #向f1写入内容
[centos@wyw]$ ln f1 f2 #创建f1的一个硬连接文件f2
[centos@wyw]$ ln -s f1 f3 #创建f1的一个符号(软)连接文件f3
[centos@wyw]$ ls -li # -i参数显示文件的inode节点信息
total 0
9797648(节点) -rw-r--r-- 2 oracle oinstall 0 Apr 21 08:11 f1 #源文件链接
9797648 -rw-r--r-- 2 oracle oinstall 0 Apr 21 08:11 f2 #硬链接
9797649 lrwxrwxrwx 1 oracle oinstall 2 Apr 21 08:11 f3 -> f1 #软连接
[centos@wyw]$ cat f1 #查看f1文件内容
I am f1 file
[centos@wyw]$ cat f2 #查看f2文件内容
I am f1 file
[centos@wyw]$ cat f3 #查看f3文件内容
I am f1 file
[centos@wyw]$ rm -f f1 #删除源文件f1
[centos@wyw]$ cat f2
I am f1 file
[centos@wyw]$ cat f3
cat: f3: No such file or directory
注:当删除原始文件 f1 后,硬连接 f2 不受影响,但是符号(软)连接 f3 文件无效
本文由作者按照
CC BY 4.0
进行授权