目录
1. 软连接 ln -s
2. 硬连接 ln
目前Linux中比较常用的是软连接,硬连接不常用,掌握基本的软连接常识即可
1. 软连接 ln -s
语法:ln -s [源文件] [目标文件]
liu@SLR:/hd1/Dling/lane/Wmq/test$ ln -s hello.txt hello.txt.soft
liu@SLR:/hd1/Dling/lane/Wmq/test$ ls -lh
total 8.0K
-rw-rw-r-- 1 liu liu 4.2K 1月 19 22:17 hello.txt
lrwxrwxrwx 1 liu liu 9 1月 19 22:17 hello.txt.soft -> hello.txt
特征:
- 软连接就类似于windows的快捷方式,在MobaXterm中可视化为一个小箭头
- 链接文件前面的标识均为:lrwxrwxrwx。其中l标识链接,三种用户均为最高级别 rwx
- 链接的文件大小只为符号链接大小,与源文件大小无关
- 上面代码段中最后一行展示的文件为:hello.txt.soft -> hello.txt,箭头指向源文件
- 如果源文件丢失,软连接也就不能访问了
2. 硬连接 ln
语法:ln [源文件] [目标文件]
liu@SLR:/hd1/Dling/lane/Wmq/test$ ln hello.txt hello.txt.hard
liu@SLR:/hd1/Dling/lane/Wmq/test$ ls -lh
total 16K
-rw-rw-r-- 2 liu liu 4.2K 1月 19 22:17 hello.txt
-rw-rw-r-- 2 liu liu 4.2K 1月 19 22:17 hello.txt.hard
特征:
1. 进行硬连接本质上是进行两步操作:拷贝+同步更新,如果源文件进行更新,则硬连接对应的文件内容也会实时更新
2. 如果源文件丢失,硬连接依旧可以访问。因为它进行了拷贝的操作
3. 软硬连接可通过i节点识别。如代码段所示,软连接与源文件节点不同,但硬连接与源文件i节点相同,由于一个文件一定有一个i节点,但是一个i节点不一定只对应一个文件。硬链接一个i节点对应多个文件。当把一个文件删除,另外一个文件依旧存在。且两个文件能够同步更新,因为当对文件进行写操作的时候在内核层面上的操作针对i节点,但是i节点能够同时映射到2个文件,所以可以同步更新。
liu@SLR:/hd1/Dling/lane/Wmq/test$ ls -i
92230489 hello.txt 92230489 hello.txt.hard 92230490 hello.txt.soft
4. 不能跨分区进行连接。比如 把 /home 目录下的文件连接到 /boot 目录下,这是不允许的。但是软连接是允许的,如下代码段所示:
liu@SLR:/hd1/Dling/lane/Wmq/test$ ln hello.txt /home/liu/hello.txt.hard
ln: failed to create hard link '/home/liu/hello.txt.hard' => 'hello.txt': Invalid cross-device link
5. 硬连接不可以针对目录使用,只能针对文件。如下代码段所示:
liu@SLR:/hd1/Dling/lane/Wmq/test$ ln dir1 dir1.hard
ln: dir1: hard link not allowed for directory