绝对链接指针,可以在另一个系统中工作

绝对链接指针,可以在另一个系统中工作

我有一个文件夹,里面有很多链接。

我将这些链接设置为绝对链接,以便我可以在文件夹内移动它们,并且它们仍然指向相同的数据。如果我将它们移动到文件夹中,相对链接就会中断。

但是当我将文件夹移动到另一个系统(例如外部硬盘驱动器或服务器)时,问题就出现了。那么所有绝对链接的地址基址都是错误的。

如果可以让链接在其地址指向中包含一个变量,那么就可以解决这个问题。

那可能吗?

答案1

我猜你的问题的答案是不同的符号链接,尽管据我所知它们只存在于 DragonFlyBSD 上(请参阅上一个问题:动态符号链接

答案2

命令

symlinks -cr folder

将把所有绝对符号链接转换folder为相对符号链接。因此,您可以移动整个文件夹,其中的链接指向其正确的相对位置(假设它们都指向 中的其他文件folder

然后像...

find folder -type l -exec echo 'LNK=$(readlink -f "{}");rm -fv "{}";ln -sv "$LNK" "{}"' ';' > xlinks
chmod +x xlinks
./xlinks

...将把所有链接从相对链接转换为绝对链接。

(注意:我放弃了直接从 执行命令的尝试find。无论如何,它给了你一个机会来检查它会做什么!)

答案3

你不能鱼与熊掌兼得。相对链接通常更好,因为您可以移动它们并将树的全部或部分复制到另一个位置。

如果您在层次结构中移动文件,则不清楚是什么应该发生:如果有链接a -> bc -> d,并且您运行mv b d,现在应该a指向d?由您决定。符号链接指向一个位置;如果你想指向一个文件,请使用硬链接(这对于目录来说是不可能的)。

如果您移动文件但仍想在其旧位置下找到它,请添加从旧位置到新位置的符号链接。

相关内容