Linux 中升级后(拷贝读写)软链接失效
1. 背景
做项目时,将一个时区文件夹放在升级包中,每次升级都会重新刷写该文件夹。该文件夹中的时区文件有些是使用基于相对路径的软链接文件,但会出现一种现象:有些机器在升级后,软链接都失效了。也就是本该是这样的:
但是有些机器就变成这样:
升级后,这些原本是软链接的文件都不在是软链接文件了。且文件里面的内容变成了,它们链接的文件的相对路径。如下图:
2. 为什么软链接失效了,文件内容改变了
原因是软链接文件中存储的是目标文件的路径,而不是目标文件的内容。当你访问软链接时,操作系统会根据路径重定向到目标文件或目录。
所以这也就是为什么上面那些失效的软链接文件的文件内容变成了:link xxx(目标文件的相对路径)。
3. 为什么软链接会失效呢?
基于上述情况,目前猜测的有一个可能:
在升级过程中,文件夹的结构可能被重新组织或移动。软链接又是基于相对路径创建的,这种变化会导致软链接失效。
4. 如何解决?
目前我的想法是把软链接文件的内容直接替换成目标文件的内容,也就是将软链接文件转成普通文件,这样可能会更安全些、可靠一些。
如果有知道具体原因或更好的解决方法的大佬,可以一起讨论一下!