整理了一些资料,软链接和硬链接的区别:
软链接相当于windows中的快捷方式。
硬链接相当于一个灾备系统,数据存放在两处,与复制不同的是两处之间存在同步机制,一处数据的改变会实时同步到另一处,而另外一处数据如果被删除了,不会影响到另一处的数据。
硬链接
1 | $ ln -d existfile newfile |
不加参数-d默认的就是创建硬链接文件,硬链接指向的是节点(inode),是已存在文件的另一个名字,修改其中一个,与其连接的文件同时被修改,对硬链接文件进行读写操作时候,效果和软链接相同。但如果我们删除硬链接文件的源文件, 硬链接文件仍然存在,而且保留了原有的内容。这时,系统就“忘记”了它曾经是硬链接文件,而把他当成一个普通文件。
硬链接文件有两个限制:
- 不允许给目录创建硬链接;
- 只有在同一文件系统中的文件之间才能创建链接(即不能跨分区或磁盘做硬链接)。
硬链接说白了是一个指针,指向文件索引节点,系统并不为它重新分配inode。
软链接
1 | $ ln -s source_path target_path |
软链接指向的是路径(path),软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是 任意文件或目录,还可以链接不同文件系统的文件,和windows下的快捷方式差不多。 软链接文件甚至可以链接不存在的文件,甚至链接文件可以循环链接自己,类似于编程语言中的递归调用。 软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现 在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。