[unix] 이미 파일이 들어있는 폴더에 드라이브를 마운트하면 파일이 어디로 이동합니까?

방금 실수로 파일이 들어있는 폴더에 새 드라이브를 마운트했습니다. 나는 그들을 신경 쓰지 않고 다른 곳에 가지고 있지만 그 폴더는 지금 비어 있습니다. 파일에 무슨 일이 있었는지 궁금합니다. 그들은 단순히 리눅스에 의해 삭제됩니까?



답변

그냥 “어두워”그리고 마운트를 해제하면 다시있을 것입니다. 🙂

실제로 파일은 “있는 그대로”있으며 마운트 해제없이 즉시 파일에 도달해야하는 경우 이른바 bindmount를 사용하여 해결할 수 있습니다 .

mount --bind /Original/FS/Mount/Point /Somewhere/Else

커널이 파일 시스템을 마운트 지점에 마운트하도록 요청할 때 커널은 마운트 지점을 마운트중인 파일 시스템에 대한 “보기 포트”로 취급하므로 마운트 된 FS 내용을 볼 것으로 예상 됩니다.

그러나 이것이 이러한 FS “계층”을 단일보기로 결합 할 수있는 유일한 방법 은 아닙니다 . 이른바 ” union mount “접근 방식이 있습니다 (BTW의 “계획 9의 중심 개념”이라는 사실을 아는 것이 재미 있습니다). 리눅스에서 당신은 사용할 수 AUFS (3.18 이후) 현재, 주류 커널에 그것의 방법을하지, 나 결코 OverlayFS를 – 그것은 했다 .


답변

새로 마운트 된 파일 시스템은 초기 파일 시스템의 일부를 숨기는 오버레이와 같습니다. poige에서 설명한 바인드 마운트와 같이 파일에 액세스하는 트릭이 있습니다. Linux에서는 개인적으로 파일 시스템을 다른 마운트 지점에 두 번 이상 마운트 할 수 있다는 사실을 좋아합니다. 따라서 루트 파일 시스템 /은 물론 on에 완벽하게 마운트 할 수 있습니다 /mnt. 공간 손실 / 파일 손실 / 디스크 사용량 계산 / …을 디버깅하는 동안 유용합니다.

잡았다 :

  • 오래된 파일은 여전히 ​​존재하며 공간을 사용하고 있습니다 . 마운트에 의해 숨겨진 파일에 디스크 공간이 ‘누락 된’것은 흔한 실수입니다. 예를 들어 실수로 디렉토리에 큰 파일을 썼을 때 파일 시스템을 마운트하기로 결정한 경우가 있습니다. 예를 들어 로깅 파일 시스템이 올바르게 마운트되기 전에 실수로 큰 데이터베이스를 시작하는 경우 …
  • 프로그램에 새로 마운트 된 파일 시스템에 의해 숨겨져있는 파일이 열려 있으면 프로그램은 신경 쓰지 않고 닫힐 때까지 ‘숨겨진’파일을 계속 사용합니다. 그 순간부터 새 파일 시스템이 마운트 해제되고 기본 디렉토리가 다시 나타날 때까지 해당 파일이 프로세스에 보이지 않습니다.

답변