Linux中有两种链接文件:
1)软链接(符号链接symbol),等同于Windows中快捷方式
ln -s 源文件名 符号链接文件名,源文件名和符号链接文件名是主从关系,源被删了,符号链接也就失效了
eg: ln -s src.c linker.c (linker.c就是src.c的一个符号链接文件);
2)硬链接,ln 源文件名 符号链接文件名,源文件名和符号链接文件名是并列关系,源被删了,符号链接依然有效。硬链接实际上和源文件在硬盘中是同一个东西,效果类似于硬盘上的一个文件,在文件系统上,在我们看来有好多个文件一样。每次删除一个文件时,只要他还有其他的硬链接存在,这个文件就不会被真正删除。只有等所有的链接文件都删除掉了,这个文件才会被真正从硬盘上删除
软链接与硬链接的区别(通俗):
硬链接可认为是一个文件拥有两个文件名;
而软链接则是系统新建一个链接文件,此文件指向其所要指的文件
若源文件改名,则软连接不可用(找不到源文件);硬链接可正常访问到源文件;
修改软连接、硬链接和源文件,访问三者都是同步变化的。
软链接
首先,我建立link_test.txt的测试文件,建立软连接指向测试文件
ln -s 源文件 软连接
查看软连接的内容和源文件内容一样,接着编辑了软连接后,查看软连接和原测试文件
说明编辑软连接就是编辑原文件。测试删除软连接后原文件正常,删除源文件后软连接失效。
同样,当我们修改任何一个软链接文件都会使内容发生改变,文件都保持同步变化。我们也可以看到软链接只有18Kb并不会占用磁盘空间。它只是一个原文件的引用,当我们将原文件删除以后,引用将会失效。
硬链接
ln 源文件 硬连接
建立硬链接后发现,硬链接的大小和原文件一样,并且索引节点号也一样。当我们改变硬链接的文件内容时,同样也会改变原文件的内容。
改变原文件内容,软硬链接内容也都同步改变:
删除原文件
软连接失效,硬链接正常
复制软、硬链接到新的文件
当我们用cp命令复制软链接时,我们复制的是原文件,而不是一个软链接。
复制软、硬链接后,对复制文件修改,都不会影响原文件。