Linuxはマウントポイント内の既存のファイルをどのように処理しますか?


52

すでにファイルが入っているフォルダーをマウントしようとすると、Linuxはエラーメッセージを表示しますか、それともマウントされたファイルシステムと既にフォルダー内にあったファイルの両方を表示しますか?


2
常にいくつかのテストファイルで試してみることができますか?
クリス

できればと思います。テストするものが何もないことがわかりました。問題のドライブのアンマウントとマウントを試みましたが、結果は両方とも同じファイルであったため決定的ではありませんでした。
スリム

フォルダーを書き込み不可にして、そこにファイル存在しないようにする方法はありますか?
エンドリス

回答:


33

マウントされるだけで、ファイルは消え、フォルダーがアンマウントされると元に戻ります。


1
消えるとはどういう意味ですか?それらはサーバー上に存在し続け、表示されないか、削除されますか?
スリム

簡単に確認しますが、削除されたと思います。
Azz

17
+1ディレクトリがそれらの上にマウントされている間、ファイルは単純に見えません。彼らは本当に...ただアクセスできない、離れて行くことはありません
sleske

10
スタックのように機能します。何か他のものをマウントすると、以前のコンテンツが非表示になります。マウントを解除すると、以前のものが再び表示されます。
vtest

4
「フォルダがアンマウントされたときに戻る」と言った人が、3分後に「削除されたと思う」と言うことができたので、私は混乱しています。ありがたいことに、前者はここの現実です。
underscore_d

111

ファイルシステムをディレクトリにマウントすると、直接/mount-point下のファイルにアクセスできなくなります/mount-point。これらはまだ存在し/mount-pointますが、マウントポイントとして機能するディレクトリではなく、マウントされたファイルシステムのルートを参照するため、少なくともこの方法では、このディレクトリのコンテンツにアクセスできません。例えば:

# 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

マウントされたファイルシステムと既に存在するデータのマージされたビューを取得する方法がありますが、ユニオンファイルシステムと呼ばれる追加のレイヤーが必要です。

Linuxでは、隠しファイルを表示する方法があります。を使用mount --bindして、マウントポイントがあるファイルシステムの別のビューを取得できます。例えば

mount --bind / /other-root-view

ルートファイルシステム内のすべてのファイルがの下に表示され/other-root-viewます。

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

特に、/mount-pointはとしてアクセスできるよう/other-root-view/mount-pointになり/other-root-view/mount-point、マウントポイントではないため、その内容を確認できます。

# 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
ジル、この答えは、NSFマウントポイントの下に保存されたアスタリスク録音を取得する必要があるときに、お尻を救っただけです!--bindはユーザーと同じ視点を持つといつも思っていました。ありがとうございました!
-andyortlieb

ディレクトリはどうですか?/mount-point/1/マウントしたときに別のファイルシステムをマウントした場合/mount-point/でも、アクセスできます/mount-point/1/か?
CMCDragonkai

@CMCDragonkaiはい、私の答えで説明したようにバインドマウントを使用して間接的に。
ジル 'SO-悪であるのをやめる'

ジャイルズ、これは素晴らしいテクニックであり、自分のシステムにあるものを分析するのを助けてくれました。また、マウントポイントを通過せずにすべてのルートディレクトリの使用状況を確認する方法である別の質問にも役立ちました。ソリューション:mkdir /r; mount --bind / /r; du -sh /r/*。ありがとう
マンゴ

将来の参照のために@Manngo、これは必要ありません。 du -x(に相当du --one-file-system)は、--bindシェナンガンを必要とせずにそれを行っていました。
ダラエル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.