如何将单个用户目录(下载、图片等)挂载到不同的硬盘上

如何将单个用户目录(下载、图片等)挂载到不同的硬盘上

我的系统在 BTRFS 分区的 SSD 上运行。我知道 /home/user/ 目录中的某些目录放在 SSD 上会更好,比如 .local、.config、.Applications 等。在这方面,我觉得应该将它们放在 SSD 上,而将多媒体目录放在不同的硬盘上。

例如,我希望将下载目录放在 3TB 硬盘上,与图片和音乐放在一起,但将文档移动到另一个 500GB 硬盘上,一些配置就是这样。

我决定从我的 500GB 硬盘开始,我创建了一个 BTRFS 分区,并为 @documents 添加了一些子卷

然后使用 fstab 将子卷挂载到 /home/documents/ 在使用 chmod 和 chown 授予挂载目录 rw 权限后,该目录现在可用,但是当我尝试删除文件或目录时,它会警告我它们将被永久删除,因此在任何地方都找不到 .Trash 目录。

最好的方法是什么?有没有办法为单个 btrfs 子卷创建一个垃圾目录?移动我的整个 /home 目录会更好吗?对于媒体目录,我是否应该使用 ext4 等其他文件系统而不是 btrfs?有没有更好的方法来实现这一点?

答案1

由于内核级别的限制,垃圾箱无法正常工作。

您可以参考以下资源:错误 70831 - 绑定挂载不允许删除文件和目录

换句话说,在垃圾回收操作过程中,有一个名为重命名(2)EXDEV当其输入/输出参数oldpath位于不同的挂载点时,会引发错误newpath

  EXDEV  oldpath and newpath are not on the same mounted filesystem.
         (Linux permits a filesystem to be mounted at multiple points,
         but rename() does not work across different mount points, even
         if the same filesystem is mounted on both.)

因此,正如评论

[...] 这意味着无法“正常”使用绑定挂载目录,因为无法从这些位置“删除”文件,而删除文件的唯一方法是永久删除,无法恢复此类数据。由于这种行为不明确,使用绑定挂载目录没有多大意义。[...]

您唯一能做的就是符号链接您的文件夹。如果您的下载文件夹位于/mnt/Data(这是我拥有它的地方,我只是用它来举例),您可以:

ln -s /mnt/Data/Download ~/Download

可能您需要~/Download在符号链接之前删除/mnt/Data/Download

答案2

使用哪个文件系统并不重要。

您随时可以将任何目录移动到其他磁盘并为其建立符号链接。

例如,我将 Ubuntu 20.04 系统安装到 SSD 分区。

我安装了一个硬盘,/media/HDD其中有一些目录,例如视频。

我通过以下方式创建了一个指向我的用户目录的符号链接:

ln -s /media/HDD/Video ~/Video

我看到视频目录就像在我的用户主目录中一样,但它存储在我的硬盘上。

相关内容