![从 /home 子目录到挂载驱动器的符号链接在重新启动时中断](https://linux22.com/image/212986/%E4%BB%8E%20%2Fhome%20%E5%AD%90%E7%9B%AE%E5%BD%95%E5%88%B0%E6%8C%82%E8%BD%BD%E9%A9%B1%E5%8A%A8%E5%99%A8%E7%9A%84%E7%AC%A6%E5%8F%B7%E9%93%BE%E6%8E%A5%E5%9C%A8%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%E6%97%B6%E4%B8%AD%E6%96%AD.png)
我的 Kubuntu 工作站有一个 SSD 和一个 HDD。 SSD 包含 Kubuntu 安装,而我想使用 HDD 进行一般存储,其中驱动器速度不是问题。
我使用以下命令通过 /etc/fstab 安装了 HDD:
UUID=... /mnt/hdd ext4 defaults 0 2
我使用以下命令为 HDD 的一些 /home 子目录创建了符号链接:
ln -s /mnt/hdd/Downloads/ ~/Downloads
这将创建所需的结果 - 例如,Firefox 下载将下载到/mnt/hdd/Downloads
已安装的 HDD 分区而不是 SSD。这并不是唯一的用例。目的是将“下载”和“文档”等目录存储在已安装的 HDD 上,同时显示在默认的 /home 位置(对于应用程序和我自己来说)。
但是,当我重新启动时,此符号链接会中断并出现以下结果:
$ ls -l ~
...
Downloads -> /mnt/hdd/Downloads/
...
$ ls -l /mnt/hdd/
...
Downloads -> /home/<username>/../../../../../mnt/hdd/Downloads
...
我不确定为什么/mnt/hdd/Downloads
重新启动时会变成损坏的符号链接。
这是全新安装,没有设置其他符号链接。
我在这里做错了什么吗?
编辑:经过一些实验,我发现这种行为并不一致。有时符号链接会损坏,有时则不会。我遇到过 5 个符号链接中只有 1 或 2 个会在重新启动时损坏的情况。
答案1
如果您粘贴的输出正确的话,/mnt/hdd/Downloads 上会发生一些非常奇怪的事情。
具体输出
$ ls -l /mnt/hdd/
...
Downloads -> /home/<username>/../../../../../mnt/hdd/Downloads
...
这看起来像路径 /mnt/hdd/Downloads 是一个符号链接...嗯...从 /home/Zach 开始,返回到 /home,到达 root ('/'),再次向上,再次...再次...(将仅保留在根目录),然后向下导航到 /mnt/hdd/Downloads
因此,首先,看起来 /mnt/hdd/Downloads 一定是错误创建的,并且似乎是一个指向其自身的循环链接。
你从中得到什么mount | grep /mnt/hdd
?如果它显示您的驱动器,那么您的 /etc/fstab 似乎工作正常。如果它为空,则说明您的驱动器未安装。
如果驱动器已安装
抱歉,您以前的下载可能已丢失。
此时我能建议的最好方法是unlink /mnt/hdd/Downloads
删除循环符号链接,然后重新创建正确的下载目录mkdir -p /mnt/hdd/Downloads
(该标志-p
对于此处的下载目录可能不是必需的,但对于其他目录可能是必需的)。
如果未安装驱动器
使用以下命令从路径中删除所有文件/mnt/hdd/
(如果未安装驱动器,则该路径实际上位于 SSD 上,而不是 HDD 上)
sudo mv /mnt/hdd /mnt/hdd.bkup; sudo mkdir -p /mnt/hdd
然后运行sudo mount -a
并验证驱动器现在是否已安装。如果不是,那么您需要修复 /etc/fstab。
假设一切顺利,您就可以mkdir -p /mnt/hdd/Downloads
按照上面的方法进行操作。
真正的问题
我必须在这里做一些推断,但事实上你有一个表单的链接/mnt/hdd/Downloads -> /home/<username>/../../../../../mnt/hdd/Downloads
看起来非常错误。
您提到您通过运行创建了符号链接ln -s /mnt/hdd/Downloads/ ~/Downloads
。
有问题的路径表明您可能ln
在某些时候以错误的顺序运行带有参数的命令,或者在某些时候从错误的目录运行命令(例如ln -s ~/Downloads /mnt/hdd/Downloads
)。
根据发生这种情况的时间,它可能会在路径中放置一个符号链接/mnt/hdd/Downloads
在你的SSD上这会阻止硬盘正确安装。在这种情况下,请按照“如果未安装驱动器”的说明进行操作
您可以获取有关文件所在驱动器的更多信息df /mnt/hdd/Downloads
,但这些详细信息对于此问题似乎并不完全重要。
最后一点
这种奇怪的行为似乎与重启 Linux 没有任何关系。如果您的ln
命令由脚本运行(在重启时或任何时候),那么您需要提供有关该脚本的详细信息,因为它是最有可能的罪魁祸首。