目录结构

目录结构

当其中一个路径中有冒号时是否可以进行覆盖安装?我看过的所有 FUSE 覆盖安装解决方案都使用冒号来分隔覆盖中的路径,但我找不到摆脱它的方法。

答案1

目录结构

假设我们正在尝试覆盖foo:bar, 和bar:baz。挂载点将是union

foo
└── a
bar
└── b
foo:bar
└── c
bar:baz
└── d
union

mergerfs

无论你尝试做什么逃避,你都可以从源头看它不会起作用。如果你试图猜测一种逃避它的方法,那就很烦人了:

$ mergerfs 'foo\:bar':'bar\:baz' union

它不会抛出错误,但会默默地忽略不存在的目录:

$ ls union
b

unionfs-fuse

同样的问题as mergerfs,无法逃脱冒号。如果目录不存在,至少它会失败并出现错误:

$ unionfs-fuse 'foo\:bar':'bar\:baz' union
Failed to open /foo\/: No such file or directory. Aborting!

overlayfs

overlayfs 允许在路径中转义冒号,但它不是 FUSE 文件系统。

$ mount -t overlay overlay -o lowerdir='foo\:bar':'bar\:baz' union
$ ls union
c  d

解决方法

一个适用于两者的简单解决方法mergerfsunionfs-fuse使用符号链接:

$ ln -s foo:bar foo_bar
$ ln -s bar:baz bar_baz
$ unionfs-fuse foo_bar:bar_baz union
$ ls union
c  d

相关内容