要挂载覆盖,它是给定lowerdir
的,作为mount(8)upperdir
上的选项或mount(2)上的数据,应用什么逻辑来转义逗号?我试过双逗号,甚至引用都没有成功。workdir
我发现有两种解决方法不是我想要的:
相对路径:只要最后一个组件没有逗号,以下工作:
mkdir /tmp/a,b /tmp/a,b/{upper,lower,work,merged} cd /tmp/a,b sudo mount \ -t overlay \ -o 'lowerdir=./lower,upperdir=./upper,workdir=./work' \ overlay \ '/tmp/a,b/merged'
但我强调,如果最后一个组件包含逗号,它就不起作用。
安装后移动路径:我相信内核会保持
inode
跟踪,因为选项值/proc/self/mountinfo
不会改变:mkdir /tmp/a\ b /tmp/a\ b/{upper,lower,work,merged} sudo mount \ -t overlay \ -o 'lowerdir=/tmp/a b/lower,upperdir=/tmp/a b/upper,workdir=/tmp/a b/work' \ overlay \ '/tmp/a b/merged' mv '/tmp/a b' '/tmp/a,b' fgrep merged /proc/self/mountinfo 314 86 0:56 / /tmp/a,b/merged rw,relatime shared:217 - overlay overlay rw,lowerdir=/tmp/a\040b/lower,upperdir=/tmp/a\040b/upper,workdir=/tmp/a\040b/work
注意:由于内核用三个十进制数字转义空格、制表符、换行符和反斜杠字符,我也尝试转义逗号\044
但没有成功,它似乎想再次转义反斜杠。