符号链接可以用来指向可能不可用的远程文件吗

符号链接可以用来指向可能不可用的远程文件吗

我正在寻找一种智能方法来管理我用于使用 omv5、dockstarter、docker 等下载的 pi...

我的 pi 可以一直开启,但较大的服务器我想要一个时间表,因此 pi 将使用 wol 唤醒它并发送下载的文件(如果文件夹中有更新)。

但问题是,我认为符号链接可以让我用另一台服务器上的真实文件虚拟地填充 Sonarr/radarr 库(无需创建巨大的数据库)。但是,符号链接是否可以经常从目标中切断,并且仍然像目标文件一样运行?

关于如何实现这一目标有什么建议吗?

答案1

您可以将符号链接简单地视为包含其指向的路径的文本文件。目标文件不必存在才能工作。

事实上,有些程序使用符号链接来编码信息,其中存储在符号链接中的路径永远不会解析为文件。一个例子是 Gattle 和 Fnord Web 服务器,它们使用符号链接进行 HTTP 重定向:

mkdir -p /var/www/mysite.example.com:80
cd /var/www/mysite.example.com:80
ln -s 'http://www.google.com:80/search?q=site:mysite.example.com' search.html

意味着 Fnord 将响应以下请求http://mysite.example.com:80/search.html通过 HTTP 重定向到 Google。

因此,符号链接的目标完全有可能消失。

但是,尚不清楚“仍然像目标文件一样运行?”是什么意思?符号链接仅包含一个路径名,它所做的只是当您打开符号链接时,操作系统实际上会打开存储在符号链接内的路径。因此,从某种意义上说,是的,符号链接的行为仍然类似于目标文件:如果您尝试在不使用符号链接的情况下打开相同的路径,那么您会收到错误,而使用符号链接时,您仍然会收到错误。

如果您询问是否有“动态链接”的可能性,即根据某种变量或条件动态指向不同路径的符号链接(类似于 Windows NT 中的 NTFS“重新分析点”),那些存在于一些 Unices 中(例如,参见蜻蜓 BSD变体符号链接),但它们在 POSIX 和 Linux 中都不存在。

答案2

我认为一种非常简单的方法是使用sshfs-mounts ,即只需通过 ssh 将服务器的目录安装到 pi 的本地目录上。然后您可以将任何符号链接指向那里:

 mkdir /home/pi-user/serverlib
 sshfs user@server:/path/to/lib /home/pi-user/serverlib
 ln -s /home/pi-user/serverlib/programm_library.so.0.2

有多种方法可以确保挂载存在,例如(以及许多其他选项):

  1. 将虚拟文件放入i_am_unmounted目录中。如果安装了网络位置,[ -e /home/pi-user/serverlib/i_am_unmounted ]则脚本中的测试将失败。 (用于-o nonemptysshfs

  2. 在 的输出中搜索远程目录mount

  3. 更详细地制作所有systemd服务,包括 WOL、安装、检查安装是否成功以及运行文件更新。

相关内容