よくあるシンボリックリンクの落とし穴はありますか?

よくあるシンボリックリンクの落とし穴はありますか?

サーバーを Amazon EC2 に移行するという私の移行戦略には、インストールとファイルをサーバー上の「標準」の場所に保持し、ログ ファイルやデータなどの実際のストレージを永続性のために EBS ストレージに保存するためのシンボリック リンクを利用することが含まれています。サーバーの起動後、EBS に保存されている構成ファイルとデータへのシンボリック リンクを作成するスクリプトを実行して、サーバーを必要な設定に「変換」します。

私は真の Linux システム管理者 (中小企業の開発者) ではないので、シンボリックリンクの使用によって、気づかないうちに何らかの問題が発生するのではないかと心配しています。ソフトウェア パッケージが壊れる、アプリケーションがシンボリックリンクの使用を好まないなどの問題が発生するのではないかと心配しています。

シンボリックリンクを使用する際によくある落とし穴はありますか、それともかなり確実なのでしょうか?

答え1

ファイルではなくディレクトリのみをソフト シンボリック リンクする場合、ほとんどの場合、完全に透過的に動作するはずです。

遭遇する可能性がある唯一の問題は、解決した後もリンクの実際のパスを参照し続ける一部のアプリケーションです。これは、後の段階でリンクのソースを変更することを選択した場合に問題を引き起こす可能性があります。

答え2

はい、「ハード」リンクは避けてください。簡単に混乱を招きかねません。ハード シンボリック リンクは、同じファイルをファイルシステムの別の場所に「再表示」するだけです。つまり、文字通り、ファイル データへの直接リンクを持つ 2 番目のエントリをファイルシステムのディレクトリ構造に作成します。ハード シンボリック リンクには用途がありますが、一般的には、「ソフト」シンボリック リンクを使用する方がよいでしょう。これは、Windows のショートカットに似ています (ただし、実装は大きく異なります)。つまり、元のファイルへのポインターにすぎません。これが最善の策です。

ソフト シンボリック リンクを削除すると、リンクが削除されます。注意しないと、ハード シンボリック リンクを削除すると、ファイルが削除される可能性があります。

答え3

誰かが指摘したように、ハード リンクはファイル システムに 2 番目のエントリを作成します。これは同じパーティションのファイルにのみ使用でき、ディレクトリには使用できません。ファイルへのハード リンクをすべて削除すると、ファイルは削除されます。

ソフト リンク、つまりシンボリック リンクは、ディレクトリ内にエントリを作成するだけで、実際のファイルが保存されている場所を一方向から簡単に確認できます。

複数のシンボリックリンクがファイルを指していることは、相手側ではわかりません。ファイルを移動または削除すると、すべてのシンボリックリンクが壊れます。

適度に使用すれば、シンボリックリンクは問題ありません。シンボリックリンクが、実際のファイルに到達する前に、さらに別のシンボリックリンクを指すシンボリックリンクを指していることに気付いた場合は、よく考えてください。おそらく、何か間違ったことをしているのでしょう...

関連情報