下面是我个人在学习linux/unix环境编程中总结的软链接与硬链接的区别,仅供参考
软链接可以跨文件系统,硬链接则不可以。
硬链接和源文件共享一个inode,这说明本质上还是同一个文件,而软链接与源文件拥有各自的inode,说明他们是独立的不同的文件。
再查看文件属性时(ls -l),软链接标明的时链接文件,而硬链接则没有标出,因为本质上硬链接和源文件是对等的。
inode节点中的链接指针数不同,创建硬链接时会使源文件的inode节点中的链接指针的数加一,而软链接不会。
文件大小不同,硬链接文件的大小与源文件相同,而软链接的大小时源文件文件名的长度。
软链接的文件中包含了源文件的路径信息,所以源文件移动位置时再访问该文件的软链接则会找不到源文件。而硬链接则可以随意移动。
软链接可以为一个目录创建一个软链接,而只有root用户才可以为目录文件创建硬链接。
可以为不存在的文件创建软链接,但不可以创建硬链接。
例子
1:软链接
命令:Ln –s /etc/inittab /test/inittab.soft
查看:ls –l /etc/initab /test/inittab.soft
发现软连接类似于windows的快捷方式,—>表示真实文件的地址
2:硬链接
命令: ln /etc/inittab /test/inittab.hard
查看: ls -l /etc/inittab /test/inittab.hard
发现硬链接与真实文件的大小和创建日期完全相同,类似于copy,同步更新。
3:硬链接与拷贝的区别:
发现拷贝与真实文件的创建日期不同。
4: 若想复制时日期相同,可以通过命令:cp –p /etc/inittab /test/inittab2
5:硬链接的同步更新
软连接类似于快捷方式,访问的就是源文件,所有肯定是跟源文件同步。
而硬链接类似于拷贝,但是却拥有同步更新的功能,再此我们可以验证。
首先在/test目录下创建文件link
(1) 分别穿件link的软连接文件和硬链接文件,link.soft link.hard
(2) 向源文件link 写入数据
(3) 查看三个文件的内容
发现硬链接文件与源文件同步更新
6:删除源文件后,对硬链接和软连接的影响
软连接类似快捷方式,所有当源文件不存在时,它也无效。
而硬链接属于拷贝,仍然存在。
7:为什么硬链接可以同步更新?
同样创建了一个文件link 和它的软链接和硬链接文件,
通过命令ls –i ,发现硬链接文件和源文件的i结点数字相同,而内核是根据文件的i结点来标识文件的,这两个文件的i结点相同,所有被认为是一个文件,所有同时写入和修改数据。
8:硬链接的要求
硬链接不能跨文件系统,即不能跨分区,类似于windows内不能将C盘的硬链接放在D盘。而软链接可以放在任何文件系统。
好了到此关于软链接与硬链接我估计各位也多少了解了一些了。