路径软链接下创建文件,这个文件跟实际路径下的文件是什么关系?

2017-02-18 00:28:03 +08:00
 alvy

对软链接有个疑问
我对/data/dir/这个路径创建软链接到/home/work/下:

shell> ln -s /data/dir/ /home/work/

那么/home/work/下就有了dir/这个软链接
那么我在/home/work/dir/下创建一个文件a.txt,
/data/dir写也会同步出现同样的文件a.txt, 那么问题来了,这两个路径下的同名文件到底是什么关系?
我用ll -il查看,发现这两个文件的 inode 是一样的,但是我删除一个的话另外一个也会删除

2760 次点击
所在节点    Linux
10 条回复
gamexg
2017-02-18 00:49:53 +08:00
这样理解就好了,
所有的涉及到软连接的操作被系统对文件路径执行了次字符串替换,将
/home/work/dir/ 替换成了 /data/dir 。
也就是实际文件只在 /data/dir 保存。
ryd994
2017-02-18 04:36:31 +08:00
软链接就是快捷方式,.lnk
删了原文件链接就坏了,删了链接原文件不影响
硬链接才是引用计数,两个引用随便删一个都不影响
kongse
2017-02-18 07:05:41 +08:00
1 楼说的对,软链接目录,"软"仅仅是对这个目录来说是软的。你到这个目录下面操作,就跟这个"软"没啥关系了,因为已经(通过软链接)进入到("原")目录里面了,里面全是硬的。
winterbells
2017-02-18 12:11:58 +08:00
软连接相当于是一卡双(多)号,分主副号
主号就是源文件(目录),副号就是链接地址=。=
sunyifei83
2017-02-18 15:51:58 +08:00
理解成 win 平台的快捷方式和映射关系
hosiet
2017-02-18 17:51:53 +08:00
用英文解释是 symlink ,也就是符号链接,这个比软链接更准确。用 Windows 的习惯来解释的话,这玩意和快捷方式没啥区别
alvy
2017-02-18 23:08:44 +08:00
@gamexg ok ,我本来也是这么理解,但是如果我对一个文件 a 创建了一个软链接 b ,那么 a 和 b 的 inode 是不一样的, a 的大小和 b 的大小也不一样,软链接 b 大概也就几比特,我删除 a , b 还是存在的,只是无效了
但是我说的那种情况,两个文件夹下的文件,大小是一样的, inode 也是一样的,删除一个,另外一个也没有了
hosiet
2017-02-19 00:33:42 +08:00
文件夹的情况……真实存在的文件夹就一个,你通过含有软链接的路径找到的文件夹中的文件自然只有一个,这时可以按照一楼字符串替换的方法来理解。所以 inode 号自然相同。文件夹的软链接完全不影响其中的文件,只是多了一种获取某文件的途径罢了。
hackpro
2017-02-19 06:26:54 +08:00
Alias
SlipStupig
2017-02-19 11:21:33 +08:00
文件快捷方式

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/341320

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX