シンボリックリンクを続行しますか?

シンボリックリンクを続行しますか?

私はしばしばシンボリックリンクを使用しますが、元のファイルを移動した後にシンボリックリンクを追跡できませんでした。また、同じディレクトリにあるいくつかのファイルを追跡するためにシンボリックリンクを使用しましたが、再び追跡を失いました。

  • どの変更を適用してもシンボリックリンクを追跡する方法(ツール/方法)はありますか?ハードリンクは唯一の方法ですか?
  • ソースファイルとリンクを含むディレクトリを移動するときにリンクが機能するように相対的な方法でシンボリックリンクを作成する方法はありますか?

ベストアンサー1

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

最初の質問の場合、ファイルの元の場所に何をしても、同じファイルを参照するリンクが本当に必要な場合は、ハードリンクがおそらくあなたが望むものでしょう。ハードリンクは、基本的に同じインデックスノードを参照する別の名前です。したがって、ハードリンクと「オリジナルファイル」の間に違いはありません。ただし、ファイルシステム間で接続する必要がある場合、通常ハードリンクは機能せず、通常はディレクトリへのハードリンクを作成できません。また、特定のファイル操作を実行するときにいくつかの違いを見つけることができます。特に、元のファイルを削除してもファイルは削除されません。ハードリンクはまだファイルを指してアクセスできます。

おすすめ記事