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?

magro
fonte
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.

Azz
fonte
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
Gilles 'SO- parar de ser mau'
fonte
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