との使用の違いを理解しようln -s
としていmount --bind
ます。基本的なシナリオでは、両方を使用して別の場所から1つのディレクトリにアクセスできます。これら2つはどのようなシナリオで異なる動作をしますか?
との使用の違いを理解しようln -s
としていmount --bind
ます。基本的なシナリオでは、両方を使用して別の場所から1つのディレクトリにアクセスできます。これら2つはどのようなシナリオで異なる動作をしますか?
回答:
これらは、少なくとも2つの場合に異なる動作をします。
A
)がB
マウントされている何か()へのシンボリックリンクにも拡張されます。リンクB
には、オリジナル(A
)ではなくマウントターゲット()の内容が表示されます。また、既存のディレクトリまたはファイルにディレクトリまたはファイルをバインドマウントし、元のコンテンツをマスクすることができます(元のコンテンツを他の場所にバインドマウントしない限り、元のコンテンツにアクセスできなくなります)。シンボリックリンクでは、オリジナルを移動または削除する必要があります。
さて、マウントを作成するのln -s
に対し、シンボリックリンクをmount --bind
作成します。
シンボリックリンクは特別な種類のファイルです。その場合はln -s /var/target /var/link
、その後、/var/link
「パスを含むファイルになり/var/target
、それに」。シンボリックリンクと通常のファイルの唯一の違いは、プログラムがシンボリックリンクで操作を実行しようとすると、通常、ファイルではなくターゲットで操作が実行されることです。するとls /var/link
、ls
プログラムはのディレクトリ一覧を取得しようとしますが、/var/link
実際には/var/target
代わりにディレクトリ一覧を取得します。
ただし、シンボリックリンクはまだ単なるファイルです。名前を変更して削除することができます。/var/link
というファイルが既にある場合、シンボリックリンク(または、通常のファイル)を作成できないことに注意してください/var/link
。最初にそれを取り除く必要があります。
マウントはファイルではありません。カーネルがメモリに保持する記録です。そうするとmount --bind /var/target /var/mount
、カーネルは/var/mount
新しい名前であるという事実を記録し/var/target
ます。(詳細はわかりません。特に、のサブディレクトリに何かをマウント/var/target
し/var/mount
ても同様に表示されるかどうか、またはなぜかなぜ表示されないかはわかりません。この回答を編集していただければ幸いです。)を実行するls /var/mount
と、と同じディレクトリにあるls /var/target
ため/var/mount
、を実行した場合と同じことが起こります/var/target
。
マウントはファイルではありません。名前を変更または削除しようとした場合にどうなるかはわかりません/var/mount
。にディレクトリが既に/var/mount
ない限り、何もマウントできないことに注意してください/var/mount
。
ln -s ../../myfile .
。別のディレクトリに移動すると、相対リンクであるため、別の場所をポイントします。これは、サブツリーをバックアップする必要があり、バックアップでリンクが機能する場合に役立ちます。
さらに、ln -sは再起動後も存続します。一方、mount --bindは、/ etc / fstabを編集して永続化しない限り、そうしません。
他の答えに加えて。システムは、ディレクトリへのハードリンクを許可しません。
# ln mydir mpoint
ln: `mydir': hard link not allowed for directory
マウントを使用すると、ハードリンクのように、つまり同じ1つのiノードに複数の名前を付けることができます。
# mount -B mydir/ mpoint/
# ls -d -i *
807175 mpoint/ 807175 mydir/
(古いバージョンのrsyncを使用したスナップショットバックアップに役立ちます。)
また、このマウントは完全ではないことに注意してください。
# mount -B -oro mydir/ mpoint/
mount: warning: mpoint/ seems to be mounted read-write.
# mount | grep mpoint
/root/learn/mydir on /root/learn/mpoint type none (rw,bind)
そのため、オプションro(読み取り専用)を要求した場合でも、マウントは引き続き読み取りと書き込みを行います。
rm -r
がありmount --bind
ます。aのln
場合、リンクを削除しますが、aの--bind
場合rm -r
、ターゲットでを実行するのと同じ効果があります。私はすぐに私のサーバーのいずれかを再構築する前に見られるような...、良いではない