O que o Linux faz com os arquivos existentes em um ponto de montagem?


52

Se eu tentar montar uma pasta que já possui arquivos, o linux me fornecerá uma mensagem de erro ou continuará mostrando o sistema de arquivos montado e os arquivos que já estavam na pasta?


2
Sempre poderia experimentar com alguns arquivos de teste, não?
18710 Chris

Eu faria se pudesse. Apenas funcionou que eu não tinha nada para testar. Tentei desmontar e montar a unidade em questão, mas os resultados foram inconclusivos porque ambos tinham os mesmos arquivos.
magro

Existe uma maneira de tornar a pasta gravável para que os arquivos não possam existir lá?
endolith

Respostas:


33

Ele será montado e os arquivos desaparecerão, voltando quando a pasta for desmontada.


11
O que você quer dizer com desaparecer? Eles continuam a existir no servidor e simplesmente não são mostrados ou foram excluídos?
slim

Vou fazer uma verificação rápida, mas acho que eles foram excluídos.
Azz

17
+1 Os arquivos são simplesmente invisíveis enquanto o diretório é montado "sobre" eles. Eles nunca realmente possam ir embora, o são apenas inacessíveis ...
sleske

10
Funciona como uma pilha; se você montar outra coisa, oculta o conteúdo anterior. Quando você desmonta, o material anterior se torna visível novamente.
vtest

4
Estou confuso com o modo como alguém que disse "voltar quando a pasta está desmontada" foi capaz de dizer 3 minutos depois "Eu acho que eles foram excluídos". Felizmente para todos os outros, o primeiro é a realidade aqui.
Underscore_d

111

Ao montar um sistema de arquivos em um diretório /mount-point, não é mais possível acessar os arquivos /mount-pointdiretamente. Eles ainda existem, mas /mount-pointagora se referem à raiz do sistema de arquivos montado, não ao diretório que serviu como ponto de montagem, portanto, o conteúdo desse diretório não pode ser acessado, pelo menos dessa maneira. Por exemplo:

# touch /mount-point/somefile
# ls /mount-point/somefile
/mount-point/somefile
# mount /dev/something /mount-point
# ls /mount-point/somefile
ls: cannot access /mount-point/somefile: No such file or directory

Existem maneiras de obter uma visão mesclada do sistema de arquivos montado e dos dados que já estavam presentes, mas você precisa de uma camada extra chamada sistema de arquivos da união .

No Linux, há uma maneira de ver os arquivos ocultos. Você pode usar mount --bindpara obter outra visão do sistema de arquivos onde está o ponto de montagem. Por exemplo

mount --bind / /other-root-view

Você verá todos os arquivos no sistema de arquivos raiz em /other-root-view.

# cat /other-root-view/etc/hostname 
darkstar

Em particular, /mount-pointagora estará acessível como /other-root-view/mount-pointe, como /other-root-view/mount-pointnão é um ponto de montagem, você poderá ver seu conteúdo lá:

# ls /mount-point/somefile
ls: cannot access /mount-point/somefile: No such file or directory
# ls /other-root-view/mount-point/somefile
/other-root-view/mount-point/somefile

5
Gilles, essa resposta acabou de salvar minha bunda quando eu precisava obter algumas gravações de asteriscos que foram salvas embaixo de um ponto de montagem da NSF! Eu sempre pensei que --bind tinha a mesma perspectiva do usuário. Obrigado!
21711 Andy on

E os diretórios? Se eu montei /mount-point/1/e montei outro sistema de arquivos /mount-point/, ainda posso acessar /mount-point/1/?
CMCDragonkai

@CMCDragonkai Sim, indiretamente, usando uma montagem de ligação conforme descrito na minha resposta.
Gilles 'SO- stop be evil'

Giles, essa é uma técnica brilhante e me ajudou a analisar o que está no meu próprio sistema. Também ajudou com outra pergunta, que é como verificar o uso de todos os diretórios raiz sem passar pelos pontos de montagem. Solução: mkdir /r; mount --bind / /r; du -sh /r/*. Obrigado
Manngo

@Manngo para referência futura, isso não é necessário. du -x(equivalente a du --one-file-system) teria feito isso sem a necessidade de --bindtravessuras.
Darael
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.