链接的概念
-
硬链接(Hard Link)
-
软链接(Soft Link)
-
ln
命令默认不带参数下创建的是硬链接,带有-s
创建的是软链接,软链接类型是 l(小写的L) -
在 ext2、ext3、ext4默认的文件系统中,存在于磁盘分区中的文件不管是什么类型都会分配一个独一无二的编号,这个编号就是索引节点(inode)
硬链接
- 是指通过索引节点(inode)进行的链接
- 多个文件名指向同一个索引节点是正常且被允许的,这种情况下文件被称为互为硬链接文件
- 同一分区/同一文件系统中,inode 号相同的文件一定是硬链接文件
- ext 文件系统的原理,只要文件的索引节点有一个以上的硬链接,删除其中的一个文件不会影响到索引节点本身和其他未被删除的链接的
- 创建硬链接针对的是文件,不能针对目录
## 创建一个硬链接:硬链接文件会自动生成
[root@iZrgngz5lz7qzsZ tmp]# echo "helloworld" > test.log
[root@iZrgngz5lz7qzsZ tmp]# cat test.log
helloworld
[root@iZrgngz5lz7qzsZ tmp]# ln test.log test.log.bak
[root@iZrgngz5lz7qzsZ tmp]# cat test.log
helloworld
[root@iZrgngz5lz7qzsZ tmp]# cat test.log.bak
helloworld
[root@iZrgngz5lz7qzsZ tmp]#
软链接
- 软链接也被称为符号链接,类似于 windows 系统中的快捷方式
- 软链接指向的是源文件的位置信息内容,通过软链接文件,可以迅速定位到源文件的实体
- 创建方式
ln -s 源文件 软链接文件
:目标软链接文件是不能存在的 - 系统使用软链接文件的方式:通过软链接文件自身的 inode,读到了软链接信息,并指向了原始文件,进而读到了原始文件名以及相关的 inode,再通过原始文件的 inode 读到原始文件的内容(block)
- 软链接文件的 block 不存放源文件位置,而是直接将源文件位置存放在 inode 里面,提高效率
- 软链接可以对目录和文件进行操作
- 删除源文件,软链接文件依然存在,但是无法访问到具体内容
- 软链接和源文件是不同类型的文件,也是不同的文件,inode 也不相同
- 可以跨文件系统作软链接
[root@iZrgngz5lz7qzsZ tmp]# echo "helloworld" > test.log
[root@iZrgngz5lz7qzsZ tmp]# ln -s test.log test.log.link
[root@iZrgngz5lz7qzsZ tmp]# ll
total 12
drwx------ 3 root root 4096 Sep 4 16:59 systemd-private-2fc348c1dfab4ac6ae937ccea432c162-chronyd.service-EmprP0
drwx------ 3 root root 4096 Sep 4 16:08 systemd-private-4a1aa9a3dba7426d84bed5887b4bad8b-chronyd.service-0ujkRX
-rw-r--r-- 1 root root 11 Sep 5 15:28 test.log
lrwxrwxrwx 1 root root 8 Sep 5 15:28 test.log.link -> test.log