ハードリンクとは異なり、ソフトリンクは実際に元のファイルの情報をHDDに保存することを知りました。 test1(ソースファイル)とtest2(test1へのソフトリンク)を作成し、test1をtest3にmv(名前変更)して、ソフトリンクtest2 - > test1を赤にし、無効にしました。リンクでInode番号を使用しているようですが、test1とtest3のInode番号は同じですが、SoftLinkは動作しません。
質問は次のとおりです。リンクを有効にするには、ソフトリンクにどのような情報が必要ですか?
答え1
ソフトリンクとも呼ばれるシンボリックリンク、inodeではなくファイル名でファイルを追跡します。したがって、リンクされたファイルは、同じファイルシステム(ハードリンクとは異なり)だけでなく、どこにでも配置できます。別の特徴は、ソフトリンクが最大限度まで他のソフトリンクを指すことができることである。ソフトリンクは本質的にターゲットパスが格納されている特別なファイルですが、Linuxはこのタイプのファイルを認識し、「内部」パスを読み取り、ターゲットファイルの権限を使用してファイルにアクセスしようとします。プログラムは、リンクをクリックせずにファイル自体に関する情報を提供するようにLinuxに要求できます(これがターゲットパスが何であるls
かを示す方法です)。しかし、ほとんどのプログラムはリンクが指す場所にのみ興味があります。
したがって、あなたの質問に答えるために、ソフトリンクには必要なすべての情報が含まれています。これにより、オペレーティングシステムはトレースリンクが指すすべての操作を完了します。
答え2
ソフトリンクはファイル名にのみ関連付けられ、inode番号には関連付けられません。元のファイルの名前が変更されると、ソフトリンクが切断され、リンクは自分が指している場所を知ることができません。答えの1つでこの画像を投稿します(覚えていません。この画像はずっと前に携帯電話に保存されました)。
元のファイルの名前を変更すると、my-soft-link
存在しなくなったファイル名を指すようになり、リンクやポインタが壊れて赤色に変わります。この場合は、my-soft-link
ぶら下がったポインタに似ています。存在しないファイルを指します。
一方、ハードリンクは inode 番号を直接指しているため、このような問題は発生しません。したがって、元のファイルの名前を変更するとmy-hard-link
ダングリングポインタになりません。
したがって、シンボリックリンクを再度有効にするには、名前が変更されたファイルを指すようにしてシンボリックリンクを更新します。
ln -sfn test3 test2