Para montar a sobreposição é dado lowerdir
, upperdir
e workdir
como opções em mount(8) ou dados em mount(2) , qual lógica é aplicada para escapar de vírgulas? Eu tentei vírgulas duplas e até citando sem sucesso.
Há duas soluções alternativas que descobri que não são exatamente o que eu quero:
Caminho relativo: desde que o último componente não tenha vírgulas o seguinte funciona:
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'
Mas reforço que não funciona se o último componente contiver vírgulas.
Mover o caminho após a montagem: acredito que o kernel mantenha o
inode
controle, pois os valores da opção/proc/self/mountinfo
não mudam: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
Nota : Como o kernel escapa de espaço, tabulação, novas linhas e caracteres de barra invertida com três dígitos decimais, também tentei escapar de vírgula \044
sem sucesso, parece que ele quer escapar de barra invertida novamente.