我正在寻找一种智能方法来管理我用于使用 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
有多种方法可以确保挂载存在,例如(以及许多其他选项):
将虚拟文件放入
i_am_unmounted
目录中。如果安装了网络位置,[ -e /home/pi-user/serverlib/i_am_unmounted ]
则脚本中的测试将失败。 (用于-o nonempty
)sshfs
。在 的输出中搜索远程目录
mount
。更详细地制作所有
systemd
服务,包括 WOL、安装、检查安装是否成功以及运行文件更新。