linux硬链接与软链接(符号链接)相关命令介绍



linux硬链接与软链接(符号链接)相关命令介绍。Linux通过索引节点(i-node)识别文件,不同的文件具有不同的索引节点(i-node)。

硬链接:顾名思义,是“硬”的,跟原文件是等价的,一模一样,我们可以把硬链接看作是一个指向文件索引节点的指针,系统并不为它重新分配i-node,与原文件共用同一个i-node(ls -i显示i-node号相同),只是每添加一个硬链接,文件的链接数加1。
$ ls -il
525931 -rw-rw-r–. 1 lzm lzm 24 8月 10 10:56 test
$ ln test test2
$ ls -il
525931 -rw-rw-r–. 2 lzm lzm 24 8月 10 10:56 test
525931 -rw-rw-r–. 2 lzm lzm 24 8月 10 10:56 test2 # 跟原文件test没有两样。
删除文件或硬链接时,只有当链接数为0时,才能真正删除。
缺点:硬链接只有在包含原文件的文件系统中才有意义,才能识别,不能跨文件系统。不允许将硬链接指向目录(至少在CentOS如此)。

软链接(符号链接):顾名思义,是“软”的,跟原文件是不一样的,系统为它重新分配i-node,拥有与原文件不同的i-node(ls -i显示i-node号不同),文件大小是原文件的路径对应的字符串长度(字节数),文件类型明确之处是’l'(链接文件)。
$ ln -s test test3
$ ls -il
525931 -rw-rw-r–. 2 lzm lzm 24 8月 10 10:56 test
525931 -rw-rw-r–. 2 lzm lzm 24 8月 10 10:56 test2
525808 lrwxrwxrwx. 1 lzm lzm 4 8月 10 11:06 test3 -> test # 文件大小为4,即”test”的长度。
$ ln -s test_dir test_dir2 # 可以指向目录。
$ ls -il
531466 drwxrwxr-x. 2 lzm lzm 4096 8月 10 11:07 test_dir
531468 lrwxrwxrwx. 1 lzm lzm 8 8月 10 11:07 test_dir2 -> test_dir # 文件大小为8,即”test_dir”的长度。
缺点:原文件更改路径,软链接像失效。需要额外空间建立新的索引节点(i-node)和保存原文件的路径内容。