用了linux 这么久,终于发现一个需要硬连接的地方
问题: 为什么要有硬连接呢?
网上搜软连接和硬连接,会有大量介绍, 这里简单说一下
软连接 等于 windows 的快捷方式。 软连接保存了源文件的地址,向c里面的指针
graph LR
A[file1] --> B[inode]
C[file2] --> A
硬连接是在文件目录上增加一个filename->inode 记录, 也就是两个文件名指向同一个inode。而一般的文件和inode是一对一的关系
graph LR
A[file1] --> B[inode]
C[file2] --> B
硬连接可以从ls -l
命令看到, 一般文件是1,空目录是2, 目录不为空时大于2
如下sm.md
文件为2表示有一个硬连接, 只有当硬连接个数为0时才会删除inode,所以删除一个硬连接不会删除文件
-rw-r--r-- 1 jimery users 306 Mar 4 17:13 文档.md
-rw-r--r-- 2 jimery users 23835 Jun 8 18:13 sm.md
回到问题,硬连接有什么用
在chroot或者容器外,必须用硬连接才能找到文件!
这是因为软连接只是保存了源文件的地址,而到了新系统
,这个地址没变,但容器内的根目录发生了变化
在容器外建立了软连接
ls content/pdf/sm2.pdf -l
lrwxrwxrwx 1 jimery users 48 Jun 8 19:28 content/pdf/sm2.pdf -> /home/j/content/pdf/sm.md
在容器内查看
lrwxrwxrwx 1 root root 48 Jun 8 11:28 content/pdf/sm2.pdf -> /home/j/content/pdf/sm.md
而在容器内,/home/j/content/pdf/sm.md 的文件已经不存在。所以导致访问失败
但硬连接就不会有这个问题