linux软链接与硬链接实例详解

发布时间:2021-01-06编辑:脚本学堂
本文介绍下,linux系统中的软链接与硬链接的创建与管理方法,有需要的朋友参考学习下。

linux中,软链接相当于windows中的快捷方式,硬链接相当于一个灾备系统,数据存放在两处,与复制不同的是两处之间存在同步机制,一处数据的改变会实时同步到另一处。另外,一处数据如果被删除了,不会影响到另一处的数据。

Linux中硬链接与软链接的详细描述:
存在两种不同类型的链接,软链接和硬链接。
修改其中一个,硬连接指向的是节点(inode),而软连接指向的是路径(path)

1,软链接文件
软链接又叫符号链接,这个文件包含了另一个文件的路径名。
可以是任意文件或目录,可以链接不同文件系统的文件。
和win下的快捷方式差不多。 链接文件甚至可以链接不存在的文件,这就产生一般称之为"断链"的问题(或曰“现象"),链接文件甚至可以循环链接自己。类似于编程语言中的递归。

命令格式:
代码: ln [-s] source_path target_path 硬链接文件
info ln 命令告诉您,硬链接是已存在文件的另一个名字,硬连接的命令是:
代码: ln -d existfile newfile   //如果不加任何参数,默认情况下是硬链接.

2,硬链接文件的两个限制:
1、不允许给目录创建硬链接;
2、只有在同一文件系统中的文件之间才能创建链接。
对硬链接文件进行读写和删除操作时候,结果和软链接相同。
但如果删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了原有的内容。
这时,系统就“忘记”了它曾经是硬链接文件。
而把它当成一个普通文件。修改其中一个,与其连接的文件同时被修改。

例子:
 

复制代码 代码示例:
$ cp /etc/httpd/conf/httpd.conf /usr/sam
$ ln httpd.conf httpd1.conf
$ ln -s httpd.conf httpd2.conf
 

第一条为硬链接,第二条为软链接

例子:
 

复制代码 代码示例:

$ ls -li
//查看一个文件或目录的inode,要通过ls 命令的的 -i参数,inode值相同的文件,他们的关系是互为硬链接的关系

总用量 80
1077669    -rw-r--r--     2 sam       adm          34890 10月 31 00:57 httpd1.conf
1077668   lrwxrwxrwx     1 sam       adm             10 10月 31 00:58 httpd2.conf ->; httpd.conf
1077669   -rw-r--r--     2 sam       adm          34890 10月 31 00:57 httpd.conf

由结果可知,使用ls -li,软连接只产生了10字节的快捷而已,硬连接却实实在在的的拷贝。
最前面的inode硬链接和源文件是一样的,而软链接不一样.对http1.conf进行编辑,可以发现httpd.conf也发生了一样的变化。

例子:
$ rm httpd.conf
删除链接的源文件,来比较不同之处。

查看删除后的结果:
 

复制代码 代码示例:
$ ls -l
总用量 44
drw-r--r--     2 sam       adm           4096 10月 30 20:14 file6
-rw-r--r--     1 sam       adm          34890 10月 31 00:57 httpd1.conf
lrwxrwxrwx     1 sam       adm             10 10月 31 00:58 httpd2.conf ->; httpd.conf

由以上结果可知:httpd2.conf实际已经不存在了,是断链,而httpd1.conf也变为了普通文件。

对于linux下的软链接与硬链接的理解与掌握,建议大家创建几个文件与目录,亲测一下,只看理论知识,往往在真正实践时手忙脚乱。