软链接与硬链接

目标

  使用硬链接和符号(或‘软’)链接,使多个文件名引用同一文件。

名词定义

  • 硬链接:从初始名称到文件系统上的数据,每个文件都以一个硬链接开始。当创建指向文件的新硬链接时,也会创建另一个指向同一数据的名称。新的硬链接与原始文件名的作用完全相同。一经创建,新的硬链接与文件的原始名称便毫无二差。

  • 软链接:用来创建类似快捷方式的命令,支持非常规文件的创建。

##实操演示

[root@jenkins tmp]# mkdir bbb
[root@jenkins tmp]# ln aaa bbb/
[root@jenkins tmp]# cd bbb/
[root@jenkins bbb]# ls -s
总用量 0
0 aaa
[root@jenkins bbb]# ls -a
.  ..  aaa
##创建一个硬链接

[root@jenkins tmp]# ln -s aaa bbb/ccc
[root@jenkins tmp]# tree bbb
bbb
├── aaa
└── ccc -> aaa

0 directories, 2 files
##创建一个软链接

[root@jenkins tmp]# ls -i
   638828 aaa
 68173151 bbb
[root@jenkins tmp]# cd bbb/
[root@jenkins bbb]# ls
aaa  ccc
[root@jenkins bbb]# ll -i
总用量 0
  638828 -rw-r--r-- 2 root root 0 128 14:41 aaa
68174567 lrwxrwxrwx 1 root root 3 128 14:44 ccc -> aaa
##通过查看文件的inode编号,可以判断出软链接是为文件指定一个新的inode编号。当删除硬链接时会删除源文件。

[root@jenkins tmp]# ln -s /tmp/aaa ./bbb/
[root@jenkins bbb]# ls
aaa
lrwxrwxrwx 1 root root 8 128 14:53 aaa -> /tmp/aaa
[root@jenkins bbb]# ls
aaa
[root@jenkins bbb]# cd ..
[root@jenkins tmp]# rm -rf aaa
[root@jenkins tmp]# ls bbb/
aaa
[root@jenkins tmp]# ll bbb/
总用量 0
lrwxrwxrwx 1 root root 8 128 14:53 aaa -> /tmp/aaa
##删除源文件后,软链接无法使用

[root@jenkins tmp]# touch aaa
[root@jenkins tmp]# mkdir bbb
[root@jenkins tmp]# ln aaa bbb/
[root@jenkins tmp]# ls
aaa
bbb
[root@jenkins tmp]# cd bbb/
[root@jenkins bbb]# ll 
总用量 0
-rw-r--r-- 2 root root 0 128 14:55 aaa
[root@jenkins bbb]# cd ..
[root@jenkins tmp]# rm -rf aaa 
[root@jenkins tmp]# ll bbb/
总用量 0
-rw-r--r-- 1 root root 0 128 14:55 aaa
##删除源文件后,硬链接可以正常使用。








文档更新时间: 2022-01-28 15:47   作者:xiubao yan