hard link and symbolic link

来源:互联网 发布:arm软件开发人员 编辑:程序博客网 时间:2024/05/16 09:44

hard link

hard link是linux中的一种文件共享方式,它的原理是共享inode。当建立一个hard link时,inode的共享计数加1,删除时减1(若减为0,则删除文件)。

建立hard link

0. 命令格式: ln src_file dis_file

1. 源文件file.src, inode = 519777, 共享计数 = 1

2. ln file.src file.hardlink

文件file.hardlink, inode = 519777(与源文件相同), 共享计数 = 2

注意

1. inode相同意味着两个文件是完全等效的,只是名字不一样。(可以理解为对不同的文件取了各种别名,这与拷贝有根本的区别)

2. 由于hard link的实现原理是共享inode,所以显然不能跨文件系统建立hard link

例如," / "  和 “ /dev ” 属于两个不同的文件系统(Filesystem)

我在根目录下建立一个/dev下的文件的hard link必然会失败

 

 

symbolic link

symbolic link是linux中另一种文件共享方式,它的原理是创建一个链接文件,里面保存的是源文件的路径。打开symbolic link文件时,系统会按照里面的路径去查找源文件,然后打开源文件。

建立symbolic link

0. 命令格式: ln -s src_file dis_file

1. 源文件file.src, inode = 519777, 共享计数 = 2

2. ln -s /home/mender/study/aa/file.src file.symboliclink

文件file.symboliclink,与flie.src 的inode 不同,说明了他们是两个不同的文件,且原文件的共享技术并没有改变。file.symboliclink 的大小为30B,正好是源文件路径长度。

注意

1. 建立symbolic link时,源文件一定要用绝对路径,否则会因为层次过深而导致链接失败。

2. 通过源文件和链接文件修改内容是等效的,但删除链接文件并不会删除源文件,删除源文件才会真正把文件删除。链接文件就像是一个快捷方式。

3. symbolic link可以跨文件系统建立链接。

 

原创粉丝点击