Fuse

FUSE 覆蓋安裝,路徑中有冒號

  • June 29, 2018

當其中一條路徑中有冒號時,是否可以進行覆蓋安裝?我看過的所有 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

解決方法

一個適用於兩者的簡單解決方法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

引用自:https://unix.stackexchange.com/questions/452681