![对于同一文件系统上的目录,很难出现“跨设备链接无效”的情况](https://linux22.com/image/949963/%E5%AF%B9%E4%BA%8E%E5%90%8C%E4%B8%80%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E4%B8%8A%E7%9A%84%E7%9B%AE%E5%BD%95%EF%BC%8C%E5%BE%88%E9%9A%BE%E5%87%BA%E7%8E%B0%E2%80%9C%E8%B7%A8%E8%AE%BE%E5%A4%87%E9%93%BE%E6%8E%A5%E6%97%A0%E6%95%88%E2%80%9D%E7%9A%84%E6%83%85%E5%86%B5.png)
我知道硬链接不能跨文件系统,但尝试通过物理上位于同一文件系统上的绑定挂载链接文件也会失败。我在下面详细说明了这一点,以便更好地理解,但我的问题的 TLDR 是为什么要将ln
挂载的目录视为单独存在?
基本上,将文件复制到共享文件夹最好使用硬链接,这样我就不会重复空间:
mymedia/
├─ share/
│ ├─ pics/
│ │ ├─ pic2.tif
│ ├─ vids/
│ │ ├─ vid1.mov
├─ homevid/
│ ├─ vid1.mov
│ ├─ vid2.mov
│ ├─ vid3.mov
├─ homepic/
│ ├─ pic1.tif
│ ├─ pic2.tif
├─ training/
mymedia/share
位于一个驱动器 (Media1) 上,而homepic
位于 Media2 和homevid
Media3 上。 中的两个文件夹share
是从 Media2/Media3 安装的。 这是来自 fstab 的内容:
/dev/disk/by-uuid/UUID_1 /mnt/Media1 auto 0 0
/dev/disk/by-uuid/UUID_2 /mnt/Media2 auto 0 0
/dev/disk/by-uuid/UUID_3 /mnt/Media3 auto 0 0
/mnt/Media1 /mnt/mymedia none bind
/mnt/Media2/homepic /mnt/mymedia/homepic none bind
/mnt/Media2/share /mnt/mymedia/share/pics none bind
/mnt/Media3/homevid /mnt/mymedia/homevid none bind
/mnt/Media3/share /mnt/mymedia/share/vids none bind
我可以使用“真实”路径创建链接,如下所示:ln /mnt/Media2/homepic/pic2.tif /mnt/Media2/share/
,并在两个目录中查看新文件;stat
确认文件的 inode 相同,并且设备相同:
小路 | 设备 |
---|---|
/mnt/Media2/homepic | 831小时/2097天 |
/mnt/Media2/共享 | 831小时/2097天 |
/mnt/mymedia/homepic | 831小时/2097天 |
/mnt/mymedia/共享/图片 | 831小时/2097天 |
/mnt/mymedia/培训 | 821小时/2081天 |
不幸的是,对于我的工作流程来说,使用绑定挂载会更好(但这失败了):ln /mnt/mymedia/homepic/pic1.tif /mnt/mymedia/share/pics/pic2.tif
我错过了什么?