No Linux, como uma alternativa para vincular a montagem, você também pode usar a montagem de sobreposição para vincular um arquivo a outro temporariamente. A vantagem de uma sobreposição é que você pode alterar a sobreposição sem precisar de privilégios de root, ao contrário de bind mount, que exigirá privilégios de root para sombrear e desfazer a sombra dos arquivos.
Demonstração:
Crie uma partição de teste com alguns arquivos de teste (observe que você precisa do root para criar um ponto de montagem que não esteja listado em / etc / fstab, mas não precisará do root para nenhuma das outras etapas):
$ mkdir one two work mpnt
$ sudo mount -t overlay none -olowerdir=one,upperdir=two,workdir=work mpnt
$ echo "hello world" > one/abcd
$ echo "another" > one/xyz
Criamos os arquivos de teste na pasta one
acima, esses arquivos também são visíveis no ponto de montagem mpnt
.
$ ls -lh mpnt
total 8.0K
-rw-r--r-- 1 lieryan lieryan 12 Jun 11 03:33 abcd
-rw-r--r-- 1 lieryan lieryan 8 Jun 11 03:33 xyz
Vamos modificar os arquivos no mpnt:
$ ln -sf abcd mpnt/xyz
Modificamos o mpnt / xyz acima para ser um link simbólico, mas o overlayfs redireciona todas as gravações para o mpnt para o upperdir, então o link simbólico que criamos é gravado em two
, podemos ver o link simbólico na pasta two
também como mpnt
:
$ ls -lh two
total 0
lrwxrwxrwx 1 lieryan lieryan 4 Jun 11 03:34 xyz -> abcd
$ ls -lh mpnt
total 4.0K
-rw-r--r-- 1 lieryan lieryan 12 Jun 11 03:33 abcd
lrwxrwxrwx 1 lieryan lieryan 4 Jun 11 03:34 xyz -> abcd
O link simbólico funciona como esperado quando usado em mpnt
:
$ cat mpnt/xyz
hello world
Se excluirmos algo do mpnt, o overlayfs também redirecionará a gravação para o upperdir:
$ rm mpnt/xyz
Nesse caso, no entanto, o overlayfs cria um arquivo de dispositivo de caractere especial (observe o atributo c), chamado de arquivo whiteout. Quando o overlayfs vê esse tipo de arquivo no upperdir, o overlayfs finge que o arquivo não existe em mpnt
:
$ ls -lh mpnt
total 4.0K
-rw-r--r-- 1 lieryan lieryan 12 Jun 11 03:33 abcd
$ ls -lh two
total 4.0K
c--------- 1 lieryan lieryan 12 Jun 11 03:33 xyz
Podemos remover o arquivo de caractere especial do upperdir para restaurar xyz de lowerdir:
$ rm two/xyz # delete the "whiteout" file
rm: remove write-protected character special file 'two/xyz'? y
Agora, xyz
é visível novamente no mpnt e tem o mesmo conteúdo de arquivo que um / xyz.
$ ls -lh mpnt
total 8.0K
-rw-r--r-- 1 lieryan lieryan 12 Jun 11 03:33 abcd
-rw-r--r-- 1 lieryan lieryan 8 Jun 11 03:33 xyz
$ cat mpnt/xyz
another