Linux的硬链接和软连接的区别
Linux系统的硬链接和软链接是有很多区别的。
1.本质区别:
硬链接本质上是同一个文件
软链接本质上不是同一个文件
2.inode节点号有区别:
硬链接有与源文件相同的inode节点号
软链接与源文件的inode节点号不同
3.文件的类型有区别:
硬链接与源文件是相同的文件类型
软链接与源文件是不同的文件类型
4.链接数有区别:
创建新的硬链接,链接数会增加,删除硬链接,链接数会减少
创建,删除软链接,链接数没有变化
5.删除源文件对链接有没有影响:
删除硬链接的源文件,链接数会减1,但是链接文件的访问不受影响
删除软链接的源文件,软链接文件将无法访问
6.是否支持跨分区创建链接:
硬链接不支持跨分区创建
软链接支持跨分区创建
7.是否支持对目录创建链接:
硬链接不支持对目录创建
软链接支持对目录创建
8.相对路径有区别:
硬链接:源文件的相对路径是相对于当前工作目录
软链接:源文件的相对路劲是相对于链接文件的的相对路径
举例来说明前4点区别:
硬链接和软链接都可以使用ln命令创建:
ln 源文件 硬链接文件
ln -s 源文件 软链接文件
我们对/data/test下的文件passwd.txt创建硬链接和软链接,看看它们的前4点不同;然后使用ll -i /data/test命令列出它们的详细信息
先使用下面的命令列出源文件的原始信息
ll -i /data/test
使用下面的命令创建硬链接
ln /data/test/passwd.txt /data/test/passwd1.txt
使用下面的命令创建软链接
ln -s /data/test/passwd.txt /data/test/passwd.txt.link
下面的命令列出/data/test下所有文件的详细信息
ll -i /data/test

看上图,可以知道硬链接passwd1.txt文件与源文件passwd.txt是同一个文件。
它们的inode节点号都是136
它们的文件类型一样,都是普通文件(-);它们的权限都是rw-r--r--;它们的所有者都是root;它们所属组都是root;
它们的大小都是96;它们的创建时间一样
创建硬链接passwd1.txt后,它们的链接数由1变成2了,链接数增加
再比较软链接passwd.txt.link与源文件passwd.txt可以知道,它们是不同的文件:
软链接passwd.txt.link文件的inode节点号是137,而源文件passwd.txt的inode节点号是136;
软链接passwd.txt.link文件的类型是链接文件(l),而源文件passwd.txt的文件类型为普通文件(-);
软链接passwd.txt.link文件的权限是rwxrwxrwx,而源文件passwd.txt的权限是rw-r--r--;
软链接passwd.txt.link文件大小是8,而源文件的大小是1;
软链接passwd.txt.link文件与源文件passwd.txt的创建时间不一样;
软链接passwd.txt.link文件连接数是1,而源文件的链接数是2。
举例说明删除源文件对链接文件的影响
我们把源文件/data/passwd.txt删除,来看看硬链接和软链接的变化:
使用下面的命令删除源文件
rm -f /data/test/passwd.txt
使用下面的查看所有的信息
ll -i /data/test

从上图可以看到,删除源文件passwd.txt后,硬链接文件passwd1.txt可以继续使用,只是链接数变为1;
而软链接则出现不能正常访问的问题。
硬链接不能支持跨分区与对目录进行创建;而软链接则支持。
举例说明:
先使用lsblk命令查看硬盘的分区情况,可以看到根"/"和/data在不同的分区。
lsblk
我们把/data/test/passwd.txt的硬链接和软链接创建在根目录下
ln /data/test/passwd.txt /passwd1.txt
ln -s /data/test/passwd.txt /passwd.txt.link
使用下面的命令查看根目录下文件详细信息
ll -i /


从上图1可以看到,跨分区创建硬链接时出现报错,无法创建;
从上图2可以看到,跨分区创建软链接成功。
我们在/data/test目录下创建目录passwd,然后对其创建硬链接和软链接。
使用下面的命令创建新目录
mkdir /data/test/passwd
ln /data/test/passwd /data/test/passwd1
ln -s /data/test/passwd /data/test/passwd.link

从上图可以得知,硬链接不能对目录创建;软链接可以对目录创建

浙公网安备 33010602011771号