シンボリックリンクには、 ls
などの機能に制限があります。 、 mv
、および cp
cd
のようなシェルによって開始されるコマンドとは異なり、それらを操作できます 、これらの関数には、論理パスに関してユーザーがディレクトリにアクセスした方法に関する情報がありません(関連記事を参照)。 mount --bind
を使用しているようです オプションを使用すると、これを回避でき、マウントされたディレクトリにリンクではなく2つの独立した物理パスが含まれるため、機能が向上し、sambaやその他のファイルサーバーとの互換性が向上します。
mount --bind
を使用して、すべてのシンボリックリンクを参照に置き換えたいと思います。 オプションですが、これはfstabに150ポイント以上をマウントすることを意味します。これまたは私が考慮すべき他の欠点から潜在的に発生する可能性のあるパフォーマンスの問題はありますか?
承認された回答:
mount --bind
を使用 、ディレクトリツリーはディレクトリ階層の2つ(またはそれ以上)の場所に存在します。これは多くの問題を引き起こす可能性があります。バックアップおよびその他のファイルコピーは、すべてのコピーを選択します。ファイルシステムをコピーすることを指定するのが難しくなります。バインドマウントされたファイルを2回コピーすることになります。 find
で検索 、 grep -r
、locate
など、すべてのコピーをトラバースします。
バインドマウントでは「機能性と互換性の向上」は得られません。それらは他のディレクトリと同じように見えますが、ほとんどの場合、これは望ましい動作ではありません。たとえば、Sambaはデフォルトでシンボリックリンクをディレクトリとして公開します。バインドマウントを使用しても何も得られません。一方、バインドマウントは、NFSを介してディレクトリ階層を公開するのに役立ちます。
バインドマウントでパフォーマンスの問題は発生しません。管理上の問題が発生します。バインドマウントには、chrootからディレクトリツリーにアクセスできるようにする、マウントポイントによって隠されたディレクトリを公開するなどの用途があります(これは通常、ディレクトリ構造の再構築中の一時的な使用です)。必要がない場合は使用しないでください。
ルートのみがバインドマウントを操作できます。通常の方法では移動できません。彼らは彼らの場所と祖先のディレクトリをロックします。
一般的に、コマンドにシンボリックリンクを渡すと、コマンドはファイルを操作する場合はリンク自体に作用し、ファイルの内容を操作する場合はリンクのターゲットに作用します。これはディレクトリにも当てはまります。これは通常正しいことです。一部のコマンドには、シンボリックリンクを異なる方法で処理するオプションがあります(例: ls -L
)。 、 cp -d
、 rsync -l </ code> 。何をしようとしても、バインドマウントが適切なツールであるよりも、シンボリックリンクが適切なツールである可能性がはるかに高くなります。