質問: シンボリックリンクを追跡し続けますか? 私はシンボリックリンクを頻繁に使用しますが、元のファイルを移動した後、シンボリックリンクを見失います。また、同じディレクトリ内のいくつかのファイルを追跡するためにシンボリックリンクを使用していますが、繰り返しになりますが、追跡できなくなります。 どんな変更を加えても、シンボリックリンクを追跡する方法(ツール/方法)はありますか?これを行うには、ハードリンクが唯一の方法ですか? 元のリンクとリンクの両方を含むディレクトリを移動したときにリンクが機能するように、シンボリックリンクを相対的な方法で作成する方法はありますか?.
回答: 2番目の質問に関しては、相対パスを使用してシンボリックリンクを作成してから、ディレクトリ構造全体を移動しても、引き続き機能するはずです。次のターミナルセッションについて考えてみます。~$ mkdir test ~$ cd test/ ~/test$ mkdir test2 ~/test$ cd test2/ ~/test/test2$ touch testfile; echo "hello, world" > testfile ~/test/test2$ cat testfile hello, world ~/test/test2$ cd .. ~/test$ ln -s ./test2/testfile testfileln ~/test$ ls -l total 8 drwxr-xr-x 2 xxxx xxxx 4096 2010-09-09 09:18 test2 lrwxrwxrwx 1 xxxx xxxx 16 2010-09-09 09:18 testfileln -> ./test2/testfile ~/test$ cd .. ~$ mv test/ testfoo ~$ cd testfoo/ ~/testfoo$ ls -l total 8 drwxr-xr-x 2 xxxx xxxx 4096 2010-09-09 09:18 test2 lrwxrwxrwx 1 xxxx xxxx 16 2010-09-09 09:18 testfileln -> ./test2/testfile /testfoo$ cat testfileln hello, world 最初の質問に関しては、ファイルの元の場所で何をしても同じファイルを参照するリンクが本当に必要な場合は、ハードリンクがおそらく必要です。ハードリンクは基本的に、同じiノードを参照する単なる別の名前です。したがって、ハードリンクと「元のファイル」の間に違いはありません。ただし、ファイルシステム間でリンクする必要がある場合、ハードリンクは機能しないことが多く、通常はディレクトリへのハードリンクを作成できません。さらに、いくつかのファイル操作を実行すると、いくつかの違いに気付くでしょう。特に、オリジナルを削除してもファイルは削除されません。ハードリンクは引き続きファイルを指し、アクセス可能です。