Fuse
FUSE 覆蓋安裝,路徑中有冒號
當其中一條路徑中有冒號時,是否可以進行覆蓋安裝?我看過的所有 FUSE 覆蓋安裝解決方案都使用冒號來分隔覆蓋中的路徑,但我找不到逃避它的方法。
目錄結構
假設我們正在嘗試覆蓋
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
與 相同的問題,
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
解決方法
一個適用於兩者的簡單解決方法
mergerfs
是unionfs-fuse
使用符號連結:$ ln -s foo:bar foo_bar $ ln -s bar:baz bar_baz $ unionfs-fuse foo_bar:bar_baz union $ ls union c d